你可以考慮使用的mime utils的讀取它們。它基本上使用unix file
命令使用的相同檢測爲給定的byte []或流源提供MIME類型。
http://www.medsea.eu/mime-util(似乎目前不可用,請嘗試查看Google緩存中的信息)。
您也可以考慮簡單地使用ImageIO.read解析每個圖像,然後使用ImageIO.write重寫它們。這也適用於JPEG圖像,但它不是完全有效的。如果您想同時縮放,裁剪或嵌入圖像,這將是一個合適的解決方案。由於這是Web提交的數據,因此嘗試將文件解析爲圖像以確保它確實是圖像而不是惡意文件類型是有一定爭論的。
ImageIO非常智能,所以您不必知道數據以何種類型開始。如果數據格式不正確,它會通過例外,所以這確保您的圖像數據是有效的。
JPEG文件顯然是以0xFFD8開頭的,所以你可以在你的代碼中檢查。
例如,簡單地重新編碼每一個形象,看起來並不像一個JPEG:
byte[] bytes = new byte[1024]; //your input
byte[] result = bytes;
if(bytes[0] != 0xFF || bytes[1] != 0xD8)
{
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpeg", baos);
result = baos.toByteArray();
}
http://www.tutorialized。com/view/tutorial/Convert-a-GIF-to-a-JPG-in-Java/28666 – Jack 2010-04-27 20:22:49