Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何有效地解码只知道其路径的图像_Android_Bitmap - Fatal编程技术网

Android 如何有效地解码只知道其路径的图像

Android 如何有效地解码只知道其路径的图像,android,bitmap,Android,Bitmap,我正在使用ViewPager创建自己的图库,它“连接”到保存要显示的图像路径的ArrayList 到目前为止,我使用: Bitmap bitmap = BitmapFactory.decodeFile(path); imageView.setImageBitmap(bitmap); imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 这是可行的,但图片相当大,我不必要地解码整个图片,因为它后来被缩小以适应布局。它很慢,当我快速滚

我正在使用ViewPager创建自己的图库,它“连接”到保存要显示的图像路径的ArrayList

到目前为止,我使用:

Bitmap bitmap = BitmapFactory.decodeFile(path);
imageView.setImageBitmap(bitmap);
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
这是可行的,但图片相当大,我不必要地解码整个图片,因为它后来被缩小以适应布局。它很慢,当我快速滚动时,有时会发生OutOfMemoryError崩溃

因此,问题是:
如何有效地解码图像,使其100%符合ImageView.ScaleType.CENTER\u,只知道其路径?

不要直接解码。使用位图工厂中的
inJustDecodeBounds=true
。选项,仅从位图加载宽度和高度。然后,您可以计算采样中的
inSampleSize
来缩放
位图

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
decodeFile将返回null,选项将包含
宽度
高度
。然后计算样本大小中的

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = myInsampleSize;
Bitmap output = BitmapFactory.decodeFile(path, options);

不要直接解码。使用位图工厂中的
inJustDecodeBounds=true
。选项
,仅从位图加载宽度和高度。然后,您可以计算采样中的
inSampleSize
来缩放
位图

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
decodeFile将返回null,选项将包含
宽度
高度
。然后计算样本大小中的

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSize = myInsampleSize;
Bitmap output = BitmapFactory.decodeFile(path, options);

谢谢你的回答,效果很好。尽管我有一个问题:如何解码特定大小的图像,比如50x50?请结合使用
inSampleSize
Bitmap.createScaledBitmap()
谢谢您的回答,效果非常好。尽管我有一个问题:如何使用特定大小(如50x50)进行解码?请结合使用
inSampleSize
Bitmap.createScaledBitmap()