问题
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