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)

解决方案?

还有另一个我可以使用的图书馆吗?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值