imagick convert png to jpg in java with im4java

非 Y 不嫁゛ 提交于 2019-12-10 19:33:18

问题


I need to convert from PNG to JPG.

However, iMagick adds a black background to it.

I saw this question which is for PHP, and tried to write the same for java like this:

// create the a jpg image
ConvertCmd cmd = new ConvertCmd();
// create the operation, add images and operators/options
IMOperation op = new IMOperation();
op.addImage(brandingURL);
op.format("JPEG");
op.composite();
op.background("white");
op.addImage(imageLocation);
//op.transparent();
// execute the operation
cmd.run(op);

But still, the image comes out with a black background.

What am I missing?


回答1:


I had to write the code like this:

 Info imageInfo = new Info(brandingURL, true);
 IMOperation op = new IMOperation();
 op.addImage(brandingURL);
 op.size(imageInfo.getImageWidth(), imageInfo.getImageHeight());
 op.addImage("xc:white", "c://write//test.jpeg");
 op.addImage("c://write//test.jpeg");
 CompositeCmd composite = new CompositeCmd();
 composite.run(op);



回答2:


The call to background should not be necessary. Accroding to the documentation, the default background is white, which suugests to me that maybe one of your pictures has a black background that overwrites/blocks the default (maybe the the one at brandingURL?).

Quote from the above linked documentation for ImageMagick:

-background color

Set the background color.

The color is specified using the format described under the -fill option. The default background color (if none is specified or found in the image) is white.

If you are using it precisely because one of the images does specify a (black) background, I suggest you move the background call to either before adding that picture or to the end of the operation (Not sure how ImageMagick operates wrt to this)



来源:https://stackoverflow.com/questions/10314684/imagick-convert-png-to-jpg-in-java-with-im4java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!