您的位置:首页 > 其它

I/O error reading PNG header!错误的一种可能原因

2017-12-12 17:33 309 查看
故名思意,该错误的原因主要为图片操作时搞错了图片类型,比如说把JPG图片重命名成PNG文件也能正常显示,但是如果操作这个伪PNG文件时就会触发此错误,一般来说这个错误的出现率并不高,比较稳妥的解决方案是在操作图片前先手动确认一下类型啦,这个已经有其他博主说了,一时找不到就不上链接了,代码为

public static String getFileExt(String filePath) {
FileInputStream fis = null;
String extension = FilenameUtils.getExtension(filePath);
try {
fis = new FileInputStream(new File(filePath));
byte[] bs = new byte[1];
fis.read(bs);
String type = Integer.toHexString(bs[0]&0xFF);
if(JPG_HEX.equals(type))
extension = JPG_EXT;
if(PNG_HEX.equals(type))
extension = PNG_EXT;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fis != null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return extension;
}
private static final String JPG_HEX = "ff";
private static final String PNG_HEX = "89";
private static final String JPG_EXT = "jpg";
private static final String PNG_EXT = "png";

我之前碰到问题的时候也觉得是这个原因,但是明明自己操作的就是PNG文件啊,困扰了半天之后发现,.如果对一个图像文件进行裁剪操作时保存到同样的图片路径里时,也会触发此问题,这个时候明明是PNG图片却会报非PNG图片的错,相当的具有误导性啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图片 解决方案 io
相关文章推荐