我已經看到了關於這個話題的幾個問題,但是沒有解決那我的問題。ImageView的位圖方向不正確
我動態創建ImageViews,並允許用戶採取/添加項目的照片清單。下面的代碼存在生成位圖和填充的ImageView:
protected void addPhotosToView(ArrayList<String> uris) {
for (String uriString : uris) {
try {
Uri uri = Uri.parse(uriString);
File imageFile = new File(uri.getPath());
int orientation = resolveBitmapOrientation(imageFile);
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
bitmap = applyOrientation(bitmap, orientation);
ImageView image = new ImageView(ItemActivity.this);
int h = 100; // height in pixels
int w = 100; // width in pixels
Bitmap scaled = Bitmap.createScaledBitmap(bitmap, h, w, true);
image.setImageBitmap(scaled);
LinearLayout photoLayout = (LinearLayout) findViewById(R.id.itemPhotoLayout);
photoLayout.addView(image);
addClickListener(image, uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
但是一旦圖像添加或採取一些圖像顯示了錯誤的方向。縱向存儲在手機中的一些照片以縱向顯示,而其他照片則呈現橫向顯示。風景照片同樣是任意的。
這似乎並非要在
正如你可以在代碼中看到,我試圖讓所有的設備(即我看到這對設備是三星S4)發生/應用使用方向變化EXIF標籤,但我總是與該設備的定位越來越0並沒有看到該請求解決問題的任何答案時,方向始終是0
我期待儘快出貨這個軟件,並且需要某種解決方法或解決方案,所以我願意接受從Uris /字符串到動態水平滾動的正確圖像列表的其他方式,如果這不能以其他方式解決的話。
看起來像我面臨的exif方向問題我通過解碼位圖和檢查EXIF方向來解決它。如果exif數據方向存在,則位圖會相應地旋轉 –
我相信@IllegalArgument是正確的。但是請張貼'resolveBitmapOrientation()'和'applyOrientation()'代碼(僅從他們的名字來判斷,似乎你已經考慮到了這一點 - 也許它們在某些情況下失敗了?)。 – matiash