zoukankan      html  css  js  c++  java
  • Bitmap通过getWidth和getHeight获取尺寸不符

    在使用BitmapFactory载入图片时,常会出现这样的情况,返回的图片尺寸与实际尺寸不符。这是因为我们把图片资源放到res/drawable文件路径下时,选择的文件不同所致。不同的目录会有不同的缩放。

    1、载入并显示图片

    将70*98的图片放在res/drawable-hdpi中。

    public class MainActivity extends Activity {
    	TextView tv_wl;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		tv_wl=(TextView)findViewById(R.id.tv_wl);
    		Bitmap bm1=BitmapFactory.decodeResource(getResources(), R.drawable.img);
    		int bm_width=bm1.getWidth();
    		int bm_height=bm1.getHeight();
    		tv_wl.setText("width="+bm_width+";    height="+bm_height);
    	}	
    }
    执行结果例如以下图所看到的:

    这里尺寸和原图同样

    2、改动文件存放路径

    (1)放到res/drawable-mdpi下。执行效果如图

    这里尺寸放大了1.5倍

    (2)放到res/drawable-xhdpi下。执行效果如图

    尺寸缩小了1.3倍

    (3)放到res/drawable-xxdpi下,执行效果如图

    尺寸缩小了2倍

    3、寻找原因

    电脑上图片尺寸,单位是像素。Android手机的屏幕分ldpi、mdpi、hdpi,甚至还有xhdpi,对于mdpi(density=160)设备,1dp=1px。对于hdpi(density=240)的设备,1dp=1.5px。所以,把图片放在了res/drawable-mdpi文件夹下。而执行的Android设备屏幕属于hdpi,导致图片尺寸会扩大1.5倍。

    4、解决的方法

    (1)如今的Android设备一般都在hdpi及以上,所以建议把图片资源主要放在hdpi中。

    (2)改动上述代码。设置缩放为false

    BitmapFactory.Options bfoOptions = new BitmapFactory.Options();
    		bfoOptions.inScaled = false; 
    		Bitmap img1 = BitmapFactory.decodeResource(getResources(), R.drawable.img, bfoOptions);
    		int bm_width=img1.getWidth();
    		int bm_height=img1.getHeight();


    执行后你会发现。不论你将图片放在哪里,都是原尺寸。

    參考文档:

    http://www.eoeandroid.com/blog-633294-2751.html

    http://q.cnblogs.com/q/47175/

  • 相关阅读:
    88. Merge Sorted Array
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    83. Remove Duplicates from Sorted List
    82. Remove Duplicates from Sorted List II
    81. Search in Rotated Sorted Array II
    80. Remove Duplicates from Sorted Array II
    计算几何——点线关系(叉积)poj2318
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7076661.html
Copyright © 2011-2022 走看看