我的應用下載Facebook用戶的jpeg個人資料圖片和base64編碼。對其進行解碼時,生成的JPEG質量和尺寸會顯着減小。我如何避免這種情況?下載後顯着jpeg質量損失和base64編碼
這裏是我下載/編碼方式:
// Download the profile picture.
BufferedImage image = ImageIO.read(new URL("http://facebook-profile-pic"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "jpeg", bos);
// Base64 encode it.
String imageData = new String(Base64.getEncoder().encode(bos.toByteArray()));
當我走的imageData的價值,並對其進行解碼,圖像比一個在原來的下載URL的方式更小。
'新的字符串(字節陣列)'是不可靠的,因爲它使用的底層系統的默認字符集編碼的字節數。如果該字符集是UTF-8或某些ISO-8859字符集,它將適用於Base64編碼的字節,但如果是其他內容,則您的數據將被損壞。使用'String imageData = Base64.getEncoder()。encodeToString(bos.toByteArray());'而不是。 – VGR
JPEG是無損文件格式,寫入時ImageIO使用特定質量。爲了獲得更高質量和/或無損,您需要明確指定質量 – copeg