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)
出現這種錯誤是因為將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();
}
總結
以上是生活随笔為你收集整理的java异常处理图片_Java处理图片时出现异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华清远见java考试题_Java面试题,
- 下一篇: java适配器各三种_适配器三种