gpt4 book ai didi

java - 使用 JMagick 重采样图像

转载 作者:行者123 更新时间:2023-12-04 04:44:13 27 4
gpt4 key购买 nike

如何使用 JMagick API 执行以下操作:
重采样图像
(ImageMagick 命令)Convert -units pixelsperinch <input file> -resample 300x300 `
在 API 中,我找不到与更改每像素 dpi 相关的任何内容。
展平图像层:
(ImageMagick 命令)Convert <inputfile withlayers> -layers merge <outputfile >请建议。

最佳答案

  • 似乎有没有方便的方法 两者都适用 -resample-layers选项。

  • JMagick 的 API 文档中唯一与这些选项类似的是方法 sampleImage 在类 MagickImage .但是,这仅以像素为单位。确实有 setUnits 允许您更改图像文件标题中声明的单位的方法。但仅此而已。它不会修改图像本身。而且 sampleImage之间好像没有联系和 setUnits方法。

    有一些代码可以使用“手动”计算重新采样图像。以下代码段基于可用的 here :
    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 is a thin JNI layer above the ImageMagick C-API. im4java in contrast just generates the commandline for the ImageMagick commands and passes the generated line to the selected IM-command (using the java.lang.ProcessBuilder.start()-method).



    所以,无论 ImageMagick 有什么命令选项,im4java 都应该有一个方法。我快速浏览了 API,确实有一个 resample 和一个 layers 方法。使用它们,您的代码将如下所示(基于来自 here 的示例):
    // 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);

    希望这有帮助!

    关于java - 使用 JMagick 重采样图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446640/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com