由于之前業務需要,需要對圖片進行壓縮,然而圖片壓縮之后,在客戶端顯示,圖片的朝向錯誤了,比如原圖片是這樣的
image.png
但是圖片壓縮之后變成了這樣:
1535686-154031f55ab2d4b7.jpg
那是不能忍啊,最終發現是因為圖片壓縮之后,把圖片的exif信息給丟失了。
根據維基百科解釋,可交換圖像文件格式常被簡稱為Exif
(Exchangeable image file format),是專門為數碼相機的照片設定的,可以記錄數碼照片的屬性信息和拍攝數據。
之后查詢資料,https://drewnoakes.com/code/exif/ 這里提供了可以查詢exif信息的解決方案。
Metadata metadata = JpegMetadataReader.readMetadata(photo);
Directory directory = metadata .getFirstDirectoryOfType(ExifIFD0Directory.class);
for (Tag tag : directory.getTags()) {
System.out.format("[%s] - %s = %s",
directory.getName(), tag.getTagName(), tag.getDescription());
}
通過這樣可以獲取到圖片的朝向信息,比如 [Exif IFD0] - Orientation = Top, left side (Horizontal / normal)。
但是這個jar包并沒有提供寫入的方法,只能獲取到圖片的exif信息,卻沒有重新寫入的方法,依然沒有解決我的煩惱。
我希望在壓縮之前獲取exif信息,在壓縮之后重新寫入,如果有人知曉,希望能夠多多指教。