android,从资产中读取jpg图像

时间:2012-08-06 20:28:38

标签: android

我从assets文件夹加载图片,但我有一个问题。

从资源和资源加载的相同图像不是相同的尺寸 - 分辨率。

为了从资产中获取图像,我使用此方法:

AssetManager am=this.getAssets();
            try {
                Bitmap bmp = BitmapFactory.decodeStream(am.open("imgs/a.jpg"));
                imageViewDraw.setImageBitmap(bmp);
            } catch (IOException e) {

                e.printStackTrace();
            }

从R.drawable加载的同一图像的输出和资产在图像上

有人可以告诉我为什么以及如何从资产中读取图像,但解决方案应该与R.drawable相同?

output images

由于

2 个答案:

答案 0 :(得分:0)

如果要将位图加载到Imageview,请使用scaleType和adjustViewbounds参数。例如,在XML中:

                        <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:adjustViewBounds="true"
                        android:scaleType="centerInside" />

当您从资源目录加载图像时,系统不会对您的位图应用任何缩放或进程,而是在使用drawable文件夹时,android会尝试根据您设备的分辨率缩放图像。 / p>

因此,获得完全相同结果的唯一真正方法是为imageview使用固定大小,理想情况下,您应该以dps指定它,理想情况下,您应该将该值放在dimens.xml文件上,以便您可以更改该值适用于各种系统配置

答案 1 :(得分:0)

您需要使用setDrawable而不是缩放的drawable。

imageView.setImageDrawable(new BitmapDrawable(getContext()。getResources(),bitmap));

这也是为什么不推荐使用另一个没有获取getResources()参数的方法的原因,它会处理这种情况下的缩放。