【问题标题】:Why are the values returned by getWidth() and getHeight() double the actual image dimensions?为什么 getWidth() 和 getHeight() 返回的值是实际图像尺寸的两倍?
【发布时间】:2015-03-08 14:02:39
【问题描述】:

我正在为 Android 开发,我的程序涉及很多位图图像 - 这些是使用 BitmapFactory 设置的。我的一张图片是 80x30,我使用以下指令将其分配给 Bitmap 变量:

bmapImg = BitmapFactory.decodeResource(currContext.getResources(), R.drawable.brick);

当我使用指令时

myImgWidth = bmapImg.getWidth();

myImgWidth 被评估为 160 而不是 80。同样,当我运行时

myImgHeight = bmapImg.getHeight();

myImgHeight 被评估为 60 而不是 30。我查看了 StackOverflow 上与这些方法相关的其他问题,但所有这些问题都是关于 getWidth() 和 getHeight() 返回 0。我做错了什么,或者这些函数返回实际图像尺寸的两倍有什么原因吗?

【问题讨论】:

    标签: java android bitmap android-studio


    【解决方案1】:

    您使用decodeResource,因此图像会根据您的 DPI 进行缩放。要将其缩放到您需要的大小,请将其放在不同的文件夹中。我建议 drawable_xhdpi 是你需要的,如果比例因子是 2。

    请记住,它会在具有不同屏幕密度的设备上进行缩放。

    例如,为了完全避免缩放,您可以将图像放到 assets 文件夹中。

    【讨论】:

      【解决方案2】:

      这完全取决于您在哪个屏幕上运行您的应用程序。这些方法返回的值是图像在当前屏幕上的像素。如果您在 mdpi 屏幕上运行并且您分别使用 80dp 和 30dp 作为它们的尺寸,它们将返回与您的图像分辨率为 1:1 的值。我敢打赌,您可能正在 xhdpi 屏幕上运行您的应用程序,并且没有该密度桶的资源

      【讨论】:

        【解决方案3】:

        如其他答案所述,图像会根据您检查的设备调整大小。

        如果您不希望 android 根据 DPI 调整图像大小,我建议您将图像添加到项目的 drawable-nodpi 文件夹中

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-09-02
          • 1970-01-01
          • 2014-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-11
          相关资源
          最近更新 更多