PNG转JPG Java ImageIO问题

发布于 2024-08-12 23:29:02 字数 232 浏览 8 评论 0原文

我已经尝试了下面的两行代码均无济于事。该代码适用于 jpg 或 gif,但如果是 png,则将图像变成粉红色。

ImageIO.write(input, "jpg", profileFile);

RenderedOp op = JAI.create("filestore", input, pFileName, "jpeg");

还有其他人遇到这个问题吗?我一直无法找到解决方案。

I have tried both lines of code below to no avail. The code works fine with jpg, or gif but turns the image pink if a png.

ImageIO.write(input, "jpg", profileFile);

RenderedOp op = JAI.create("filestore", input, pFileName, "jpeg");

Anyone else run into this problem? I haven't been able to find a solution.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

盗梦空间 2024-08-19 23:29:02

你重复了你的问题。并且有关于 Sun 库中报告的错误的答案以及解决方法和链接。

使用 Java 将 PNG 转换为 JPG 时出现问题 (ImageIO.写())

You have duplicated your question. And there is answer about reported bug in Sun's library and workaround and link.

Problem converting PNG to JPG using Java (ImageIO.write())

南风几经秋 2024-08-19 23:29:02

我不确定这是否是正确的答案。但是还有另一篇文章建议JPEG的实现用 Alpha 通道书写有点奇怪。

I'm not sure if this is the right answer or not. But there is another post that suggest that the implementation of JPEG writting with an alpha channel is a bit screwy.

浅沫记忆 2024-08-19 23:29:02

我使用以下代码绘制 PNG,没有遇到问题。它将多个 PNG 图像组合成一个图像。图像具有透明度,并使用双线性变换进行混合。

BufferedImage image = new BufferedImage(BOARD_SIZE, BOARD_SIZE, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2d = image.createGraphics();
AffineTransformOp transformOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR);
g2d.drawImage(someOtherImage, transformOp, 0, 0);

完成图像后,我使用以下代码将其写入响应:

OutputStream responseStream = response.getOutputStream();
ImageIO.write(image, "PNG", responseStream);

I draw PNGs with the following code and do not run into a problem. It combines multiple PNG images into a single image. The images have transparency, and use bilinear transform for blending.

BufferedImage image = new BufferedImage(BOARD_SIZE, BOARD_SIZE, BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2d = image.createGraphics();
AffineTransformOp transformOp = new AffineTransformOp(new AffineTransform(), AffineTransformOp.TYPE_BILINEAR);
g2d.drawImage(someOtherImage, transformOp, 0, 0);

When I finish the image, I write it to a response using the following code:

OutputStream responseStream = response.getOutputStream();
ImageIO.write(image, "PNG", responseStream);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文