java异常处理图片_Java处理图片时出现异常

Java处理图片时出现异常

javax.imageio.IIOException: Not a JPEG file: starts with 0x47 0x49

at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(Unknown Source)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(Unknown Source)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(Unknown Source)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(Unknown Source)

at com.sun.imageio.plugins.jpeg.JPEGImageReader.getWidth(Unknown Source)

at com.test.filedownloader.ImageHandler.getImageDim(ImageHandler.java:60)

at com.test.filedownloader.ImageHandler.main(ImageHandler.java:96)

Exception in thread "main" java.lang.NullPointerException

at com.test.filedownloader.ImageHandler.getImageDim(ImageHandler.java:70)

at com.test.filedownloader.ImageHandler.main(ImageHandler.java:96)

411208.html

出现这种错误是因为将gif 图片后缀改成了jpg

解决办法:

根据文件的前面几个字节,判断文件类型

/*

* 判断图片的原始类型 2016-6-27

*/

private String getFileSuffix(final String path) throws IOException {

String result = "";

String hex="";

if (path != null) {

File image=new File(path);

InputStream is = new FileInputStream(image);

byte[] bt = new byte[2];

is.read(bt);

hex=bytesToHexString(bt);

is.close();

if(hex.equals("ffd8")){

result="jpg";

}else if(hex.equals("4749")){

result="gif";

}else if(hex.equals("8950")){

result="png";

}

}

return result;

}

public static String bytesToHexString(byte[] src) {

StringBuilder stringBuilder = new StringBuilder();

if (src == null || src.length <= 0) {

return null;

}

for (int i = 0; i < src.length; i++) {

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值