簡體   English   中英

圖片未顯示圖庫效果

[英]Images don't show gallery effects

我從uris獲取圖像,但是它們沒有顯示任何已完成的畫廊效果(例如,灰度,棕褐色)。 我希望得到編輯后的圖像。 例如:

ContentResolver cr = activity.getContentResolver();
Cursor cur = cr.query(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, // data
       new String[] { MediaStore.Images.Media._ID, 
       MediaStore.Images.Media.BUCKET_DISPLAY_NAME }, // Which columns to return
       "", // Which rows to return (all rows)
       null, // Selection arguments (none)
       MediaStore.Images.Media.DATE_ADDED+" DESC" // Ordering
);

ArrayList<String> bucketImageList = new ArrayList<String>();

//get bitmap thumbnails for all albums
if (cur.moveToFirst()) {
       String bucketName;
       String imageID;
       do {
               imageID = cur.getString(cur.getColumnIndex(MediaStore.Images.Media._ID));
               Uri uri = Uri.parse("content://media/external/images/media");
               uri = Uri.withAppendedPath(uri, "" + imageID);
               bucketImageList.add(uri.toString());
       } while (cur.moveToNext());
       cur.close();
       bucketImages = bucketImageList.toArray(new String[bucketImageList.size()]);
} 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(bucketImages[2]));

該位圖不會顯示在Gallery應用程序中做出的任何效果(摩托羅拉Gallery應用程序除外)。

您的代碼應類似於以下內容:

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK)
    {
        Uri imageUri = data.getData();
        Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
    }
}

如果您需要加載非常大的圖像,則以下代碼會將其加載到圖塊中(避免大內存分配):

BitmapRegionDecoder decoder = BitmapRegionDecoder.newInstance(myStream, false);  
Bitmap region = decoder.decodeRegion(new Rect(10, 10, 50, 50), null);

另請參閱此答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM