我有一段非常简单的代码,它接收图像的路径,读取并调整大小:
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 ...
答案 0 :(得分:0)
我决定使用Javascript在客户端进行大小调整。这样做更快更简单。此外,在Java中创建像样的缩略图可能会非常痛苦:https://community.oracle.com/docs/DOC-983611