使用java将透明gif / png转换为jpeg
2022-09-01 21:42:15
我想使用Java将gif图像转换为jpeg。它适用于大多数图像,但我有一个简单的透明gif图像:
输入 gif 图像 http://img292.imageshack.us/img292/2103/indexedtestal7.gif
[如果图像丢失:它是一个蓝色圆圈,周围有透明像素]
当我使用以下代码转换此图像时:
File file = new File("indexed_test.gif");
BufferedImage image = ImageIO.read(file);
File f = new File("indexed_test.jpg");
ImageIO.write(image, "jpg", f);
此代码在不引发异常的情况下工作,但会导致无效的 jpeg 图像:
[如果图像丢失:IE无法显示jpeg,Firefox显示颜色无效的图像。
我使用的是Java 1.5。
我还尝试使用 gimp 将示例 gif 转换为 png,并使用 png 作为 Java 代码的输入。结果是一样的。
这是JDK中的一个错误吗?如何在没有第三方库的情况下正确转换图像?
更新:
答案表明jpeg转换无法正确处理透明度(我仍然认为这是一个错误),并建议用预定义的颜色替换透明像素的解决方法。这两种建议的方法都非常复杂,所以我实现了一个更简单的方法(将作为答案发布)。我接受第一个已发布的答案与这个解决方法(由Markus)。我不知道哪种实现更好。我选择了最简单的一个,我仍然找到了一个不起作用的gif。