在我的應用程序中,我使用ACTION_IMAGE_CAPTURE
意圖來拍攝照片。當相機返回時,文件被選中,如果旋轉爲縱向一個位圖旋轉並保存到磁盤上用下面的代碼:已保存的JPEG是旋轉後從磁盤加載的JPEG的兩倍大
BitmapFactory.Options options = new Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath(), options);
if (bmp != null) {
Matrix m = new Matrix();
m.postRotate(90);
Bitmap rotated = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m,
true);
rotated = rotated.copy(Bitmap.Config.RGB_565, false); // added based on comment
f.delete();
FileOutputStream fos = new FileOutputStream(f);
rotated.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
}
這工作,因爲它應該,但文件大小的兩倍非旋轉圖片。我試圖將BitmapFactory.Options
上的密度設置爲0,將比例設置爲假,但都沒有達到預期的效果。我希望我轉換的圖像與我從磁盤加載的圖像大小相同。我的代碼中是否有防止這種情況發生的東西?
相當不錯的描述如何計算大小;)實際上已經錯過了。 – Warpzit 2012-07-09 13:55:10
謝謝你的回覆。我添加了一行代碼,應該將旋轉後的位圖轉換爲適當的像素格式,但問題依然存在。任何其他想法?我認爲在設置BitmapFactory.Options – redwoolf 2012-07-09 14:17:19
上的RGB_565時考慮了像素格式。我不確定Android如何處理像這樣的位圖格式。您更改的行可能不會影響位圖如何輸出(重新壓縮)到新文件。 – MusiGenesis 2012-07-09 14:21:50