调整大小后输出图像 (jpg) 变为红色 - Java AWT
Output image (jpg) turns red after resizing - Java AWT
我有一段非常简单的代码,它接收图像的路径,读取它并调整它的大小:
File inputFile = new File(inputImagePath);
BufferedImage inputImage = ImageIO.read(inputFile);
BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = outputImage.createGraphics();
graphics2D.drawImage(inputImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH), 0, 0, scaledWidth, scaledHeight, null);
graphics2D.dispose();
return outputImage;
大多数文件都可以正常工作。但是,有一个文件(到目前为止我发现的)在调整大小后变成红色。这是一个 JPG 文件:
BufferedImage@c4d0fc: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@17476bd transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 1920 height = 1080 #numDataElements 3 dataOff[0] = 2
其他工作正常的图像文件也是类型 5。
为什么会这样?图像不应该有 alpha...
我决定在客户端使用 Java 脚本调整大小。它做起来更快更简单。此外,在 Java 中创建像样的缩略图可能会非常痛苦:https://community.oracle.com/docs/DOC-983611
我有一段非常简单的代码,它接收图像的路径,读取它并调整它的大小:
File inputFile = new File(inputImagePath);
BufferedImage inputImage = ImageIO.read(inputFile);
BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = outputImage.createGraphics();
graphics2D.drawImage(inputImage.getScaledInstance(scaledWidth, scaledHeight, Image.SCALE_SMOOTH), 0, 0, scaledWidth, scaledHeight, null);
graphics2D.dispose();
return outputImage;
大多数文件都可以正常工作。但是,有一个文件(到目前为止我发现的)在调整大小后变成红色。这是一个 JPG 文件:
BufferedImage@c4d0fc: type = 5 ColorModel: #pixelBits = 24 numComponents = 3 color space = java.awt.color.ICC_ColorSpace@17476bd transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 1920 height = 1080 #numDataElements 3 dataOff[0] = 2
其他工作正常的图像文件也是类型 5。
为什么会这样?图像不应该有 alpha...
我决定在客户端使用 Java 脚本调整大小。它做起来更快更简单。此外,在 Java 中创建像样的缩略图可能会非常痛苦:https://community.oracle.com/docs/DOC-983611