首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于JMagick的图像重采样

基于JMagick的图像重采样
EN

Stack Overflow用户
提问于 2013-08-26 14:34:06
回答 1查看 4.1K关注 0票数 2

如何使用JMagick API执行以下操作:

重采样图像

(ImageMagick命令) Convert -units pixelsperinch <input file> -resample 300x300 `

在API中,我找不到任何与每个像素更改dpi有关的内容。

平面图像层:

(ImageMagick命令)Convert <inputfile withlayers> -layers merge <outputfile >

请建议一下。

EN

回答 1

Stack Overflow用户

发布于 2013-11-09 22:35:07

  • 现在看来,没有为-resample-layers选项提供方便的方法

JMagick的API文档中唯一类似于这些选项的是类sampleImage中的方法MagickImage。然而,该操作仅以像素为单位。确实有一个setUnits方法允许您更改在图像文件头中声明的单元。但仅此而已。它不会修改图像本身。sampleImagesetUnits方法之间似乎没有任何联系。

有一些代码可以使用“手动”计算来重绘图像。下面的片段基于可用的这里

代码语言:javascript
复制
MagickImage lightImg = new MagickImage (new ImageInfo (strOrigPath));

//Get the original resolution 
double origXRes = lightImg.getXResolution();
double origYRes = lightImg.getYResolution();

//Get present dimensions
int w = (int)lightImg.getDimension().getWidth();
int h = (int)lightImg.getDimension().getHeight();

//Calculate new dimensions
double new_w =  w / origXRes * newXRes;
double new_h =  h / origYRes * newYRes;

//Scale image 
lightImg =lightImg.scaleImage((int)new_w, (int)new_h);

//Update info on image file
lightImg.setFileName(strDestPath);
lightImg.setXResolution( newXRes);
lightImg.setYResolution(newYRes);

//Save image
lightImg.writeImage(new ImageInfo());
  • 可能的替代

我建议你试试im4java。在网站上:

JMagick是ImageMagick C之上的一个瘦JNI层.相反,im4java只生成ImageMagick命令的命令行,并将生成的行传递给所选的IM-命令(使用java.lang.ProcessBuilder.start()-method)。

因此,无论ImageMagick有什么命令选项,im4java都应该有一个方法。我快速地看了一下API,确实有一个resample和一个layers方法。使用它们,您的代码将如下所示(基于这里的示例):

代码语言:javascript
复制
// create command
convertCmd cmd = new ConvertCmd();

// create the operation, add images and operators/options
IMOperation op = new IMOperation();
op.units("pixelsperinch");
op.addImage(strOrigPath);
op.resample(300, 300);

// execute the operation
cmd.run(op);

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18446640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档