gpt4 book ai didi

java - 使用 ImageIO.write jpg 文件 : pink background 的问题

转载 作者:IT老高 更新时间:2023-10-28 20:35:03 27 4
gpt4 key购买 nike

我正在使用下面的代码来写一个jpg文件:

String url="http://img01.taobaocdn.com/imgextra/i1/449400070/T2hbVwXj0XXXXXXXXX_!!449400070.jpg";
String to="D:/temp/result.jpg";
ImageIO.write(ImageIO.read(new URL(url)),"jpg", new File(to));

但我得到 result.jpg 是粉红色背景图片:

alt text

最佳答案

您可以使用 Toolkit.createImage(url) 解决此问题而不是 ImageIO.read(url)它使用不同的解码算法实现。

如果您使用 Sun JDK 附带的 JPEG 编码器,那么您还必须确保向其传递的图像没有 alpha channel 。

例子:

private static final int[] RGB_MASKS = {0xFF0000, 0xFF00, 0xFF};
private static final ColorModel RGB_OPAQUE =
new DirectColorModel(32, RGB_MASKS[0], RGB_MASKS[1], RGB_MASKS[2]);

// ...

String sUrl="http://img01.taobaocdn.com/imgextra/i1/449400070/T2hbVwXj0XXXXXXXXX_!!449400070.jpg";
URL url = new URL(sUrl);
Image img = Toolkit.getDefaultToolkit().createImage(url);

PixelGrabber pg = new PixelGrabber(img, 0, 0, -1, -1, true);
pg.grabPixels();
int width = pg.getWidth(), height = pg.getHeight();

DataBuffer buffer = new DataBufferInt((int[]) pg.getPixels(), pg.getWidth() * pg.getHeight());
WritableRaster raster = Raster.createPackedRaster(buffer, width, height, width, RGB_MASKS, null);
BufferedImage bi = new BufferedImage(RGB_OPAQUE, raster, false, null);

String to = "D:/temp/result.jpg";
ImageIO.write(bi, "jpg", new File(to));

注意:我的猜测是颜色配置文件已损坏,Toolkit.createImage()忽略所有颜色配置文件。如果是这样,那么这将降低具有正确颜色配置文件的 JPEG 的质量。

关于java - 使用 ImageIO.write jpg 文件 : pink background 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386446/

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