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方法的代码,却不了解它在做什么。谢谢