首页 > 解决方案 > 如何使用 BitmapFactory 加载图像文件但不是原始大小(缩小它)

问题描述

所以我正在使用这段代码

Bitmap myBitmap = BitmapFactory.decodeFile(fname);

加载图像文件。但有时加载的图像可能像 512x512 一样大,我现在不想加载图像的所有 262144 像素,而是按比例加载它。我该怎么做?

标签: javaandroid

解决方案


你得到原始图像Bitmap myBitmap = BitmapFactory.decodeFile(fname)

Integer scaleValue;

Integer scaleHeight = desiredMaxPixelHeight/myBitmap.getHeight();
Integer scaleWidth = desiredMaxPixelWidth/myBitmap.getWidth();

if (scaleHeight < 1 && scaleWidth < 1) scaleValue = 1;
else if (scaleHeight > scaleWidth) scaleValue = scaleHeight;
else scaleValue = scaleWidth;

Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, myBitmap.getHeight()/scaleValue, myBitmap.getWidth()/scaleValue, false);

缩放逻辑可以做得更好,但重点是您可以检查有关原始位图的信息,然后使用Bitmap.createScaledBitmap(oldBitmap,sizeX,sizeY,false)


推荐阅读