Android从资产加载大小调整后的图像

时间:2014-06-26 10:24:36

标签: android bitmap resize scale assets

我的安卓游戏中出现内存错误,我认为它是由我的图像加载功能引起的。一切都在我的手机上工作正常,但在平板电脑上我的内存超出错误。

我正在使用矩阵,因为我需要将图像调整为浮点值。但在这种情况下,我必须首先加载完整大小的图像,然后用矩阵调整大小,我认为这会导致内存错误。

这是处理图像大小调整的正确方法吗?

public class Sprite {
    private Bitmap bitmap = null;
    private float scaleX, scaleY;

    public Sprite(String path, float targetWidth, float targetHeight, Context context) {
        InputStream istr;
        AssetManager assetManager = context.getAssets();
        Matrix scalematrix = new Matrix();

        try {
            istr = assetManager.open(path);
            bitmap = BitmapFactory.decodeStream(istr);
            scaleX = targetWidth / bitmap.getWidth();
            scaleY = targetHeight / bitmap.getHeight();
            scalematrix.postScale(scaleX, scaleY);
            bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), scalematrix, true);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

BitmapFactory.Options有public int inSampleSize - 如果设置为值> 1,请求解码器对原始图像进行二次采样,返回较小的图像以节省存储空间。

您可以尝试使用BitmapFactory.decodeXXX(..., BitmapFactory.Options opts)(decodeFile()等。)