【问题标题】:Images don't show gallery effects图片不显示画廊效果
【发布时间】:2014-06-03 18:37:02
【问题描述】:

我从 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 应用程序除外)。

【问题讨论】:

  • 您能提供一些代码吗?谢谢! :)
  • 刚刚添加了一个小例子。谢谢!
  • 你的例子太小了,戴夫!我很欣赏合成,但这太过分了!
  • they aren't showing any of the gallery edits that have been made (ie. grayscale, sepia) - 你保存你修改过的图片吗?
  • 是的。在摩托罗拉的图库应用程序中,它会创建一个新图像。在 Android 的默认应用程序中,它只是保存对图像所做的编辑。它实际上并不编辑图像,而只是显示编辑。这样您就可以随时撤消已保存的更改。

标签: java android uri effects android-gallery


【解决方案1】:

您的代码应如下所示:

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);

另见this answer

【讨论】:

  • 感谢您的帮助,但我已经设法从 uris 加载位图。它只是没有加载使用 Gallery 应用程序所做的编辑。它只是加载原始图像。
猜你喜欢
  • 1970-01-01
  • 2017-05-13
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多