java读取 png_如何让java的ImageBuffer正确读取PNG文件?
出于某種原因,使用ImageBuffer和ImageIO打開一些PNG文件不起作用.這里有一些我正在使用的代碼可以很好地調整大小/裁剪JPG:
BufferedImage image = ImageIO.read(new File(location));
BufferedImage croppedImage = image.getSubimage(
cropInfo.getX(), cropInfo.getY(), cropInfo.getW(), cropInfo.getH());
BufferedImage resizedImage = new BufferedImage(
TARGET_WIDTH, TARGET_HEIGHT, croppedImage.getType());
Graphics2D g = resizedImage.createGraphics();
g.drawImage(croppedImage, 0, 0, TARGET_WIDTH, TARGET_HEIGHT, null);
g.dispose();
this.changeContentType("image/png", ".png"); // not really relevant. just a property
ImageIO.write(resizedImage, "png", new File(location));
return resizedImage;
此函數的目標是獲取給定的任何類型,調整大小并裁剪圖像,然后將其保存到具有相同文件名的PNG.
它適用于Windows,但如果我在Linux(lenny)上裁剪/調整大小,它會完全崩潰并抱怨文件的類型(它表示類型為0).
java.lang.IllegalArgumentException: Unknown image type 0
java.awt.image.BufferedImage.(BufferedImage.java:490)
trainingdividend.domain.file.ServerImage.resizeImage(ServerImage.java:68)
trainingdividend.domain.file.ServerImage.cropAndResize(ServerImage.java:80)
trainingdividend.service.user.UserAccountManagerImpl.cropAvatar(UserAccountManagerImpl.java:155)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
解決方案?
還有另一個我可以使用的圖書館嗎?
總結
以上是生活随笔為你收集整理的java读取 png_如何让java的ImageBuffer正确读取PNG文件?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos下修改mysql默认端口_C
- 下一篇: java继承和引用_浅谈Java继承、传