从网上下载图片的时候可能不知道图片是什么格式的,这样如果用Image.write来写文件的话可能会出问题。刚才尝试用二进制把文件读下来,然后统一成jpg的后缀,这样读取jpeg和gid等格式的文件之后都能正常预览。。。
上代码:
public class Main {
public static String getFormatName(Object object) throws Exception{
ImageInputStream iis = ImageIO.createImageInputStream(object);
Iterator<ImageReader> iterator = ImageIO.getImageReaders(iis);
while (iterator.hasNext()) {
ImageReader reader = (ImageReader)iterator.next();
return reader.getFormatName();
}
return null;
}
public static void main(String[] args){
try {
URL url = new URL("http://info-database.csdn.net/Upload/2012-01-31/ccb-475-60.gif");
HttpURLConnection httpURLConnection = (java.net.HttpURLConnection) url.openConnection();
httpURLConnection.connect();
BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
FileOutputStream fos = new FileOutputStream("c:/csdn.jpg");
byte[] buffer = new byte[1024];
int size = 0;
while((size = bis.read(buffer)) != -1)
fos.write(buffer, 0, size);
fos.close();
bis.close();
File file = new File("c:/csdn.jpg");
System.out.println(getFormatName(file));
} catch (Exception e) {
}
}
}