2011-12-20 89 views
2

我將JPG圖像上傳爲byte [],但是在轉換爲byte []之前EXIF的Bitmap條帶。如何上傳原始jpg而不將其轉換爲位圖?Android:上傳JPG圖像而不會丟失EXIF

File imagefile = new File(filepath + "DSC00021.jpg"); 
FileInputStream fis = new FileInputStream(imagefile); 
Bitmap bi = BitmapFactory.decodeStream(fis); // EXIF info lost 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
bi.compress(Bitmap.CompressFormat.JPG, 100, baos); 
byte[] data = baos.toByteArray(); 

p.s.我不想使用任何第三方庫。 ExifInterface只能寫入文件而不能寫入流/字節數組。

+2

爲什麼不把整個文件內容從FileInputStream讀到字節數組而不是轉換成Bitmap對象?谷歌搜索會給你噸結果如何獲得一個文件的內容到一個字節數組。 – 2011-12-20 05:17:25

回答

0

將文件轉換爲位圖由

Bitmap bi = BitmapFactory.decode(filepath + "DSC00021.jpg"); 

可以過指定選項,看看API documentation

或者,如果你想從一個文件到另一個交換的元數據,sanselan可能會是最佳選擇。這在處理圖像時會很有幫助,例如重新調整大小。

sample code將引導你在一個正確的方向。

+0

我提到過,我不想用第三方庫來做。 – Taranfx 2012-07-20 15:10:24

0

以上代碼不適用於大多數情況。如果你想解碼大尺寸圖像,你會得到「內存不足錯誤」。使用bitmpafactory選項解碼。

相關問題