Android 安卓从图库中选择一个图像并调整其大小,然后再将其拉入

Android 安卓从图库中选择一个图像并调整其大小,然后再将其拉入,android,android-gallery,android-bitmap,Android,Android Gallery,Android Bitmap,我遇到的问题是,我的图库中的图像比我需要的要大得多 在我把它们拉进来之前,我已经找到了缩小它们大小的方法,但我只是没有把它们放在一起,因为我发现的大部分内容都涉及位图资源,而不是库中已经存在的位图 所以,基本上,我得到的图像是这样的 imageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 但在我把它分配到我的位图变量之前,我需要把它缩小到一个适合手机的合理大小 任何有助于更好地了解这里发生的事情

我遇到的问题是,我的图库中的图像比我需要的要大得多

在我把它们拉进来之前,我已经找到了缩小它们大小的方法,但我只是没有把它们放在一起,因为我发现的大部分内容都涉及位图资源,而不是库中已经存在的位图

所以,基本上,我得到的图像是这样的

  imageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
但在我把它分配到我的位图变量之前,我需要把它缩小到一个适合手机的合理大小

任何有助于更好地了解这里发生的事情的人都将不胜感激

getBitmap()
是一种不太方便的方法。它的主体是一个惊人的四行代码:

public static final Bitmap getBitmap(ContentResolver cr, Uri url)
        throws FileNotFoundException, IOException {
    InputStream input = cr.openInputStream(url);
    Bitmap bitmap = BitmapFactory.decodeStream(input);
    input.close();
    return bitmap;
}
这就是为什么我不费心教别人

IMHO,最好的解决方案是您使用其中一个,例如。大多数好的应用程序都可以从
Uri
加载,并将调整大小作为操作的一部分,在后台线程上完成繁重的工作


如果出于任何原因,您想自己完成所有工作,请使用
BitmapFactory.Options
对象调用
BitmapFactory.decodeStream()
。特别是,设置
inSampleSize
以指示您希望在读取图像时对图像进行重新采样,所以你最终得到了一个更小的
位图
占用更少的堆空间。

哦,伙计……这正是我想要得到的答案,因为它让我意识到我所做的事情根本不需要使用位图,我可以直接使用Uri。这是我所缺少的一小部分,这是因为我抢走了一些使用getBitmap方法的代码,却不了解它在做什么。谢谢