如何修改java.lang.OutOfMemoryError?
如何修改java.lang.OutOfMemoryError?
今日竹石 发表于4年前
如何修改java.lang.OutOfMemoryError?
  • 发表于 4年前
  • 阅读 404
  • 收藏 1
  • 点赞 0
  • 评论 1

【腾讯云】新注册用户域名抢购1元起>>>   

报oom错误的代码:

public void onPictureTaken(byte[] data, Camera camera) {
    Bitmap foto = BitmapFactory.decodeByteArray(data, 0, data.length);
    wid = foto.getWidth();
    hgt = foto.getHeight();

    Bitmap newImage = Bitmap.createBitmap(wid, hgt, Bitmap.Config.ARGB_4444);
    Canvas canvas = new Canvas(newImage);
    canvas.drawBitmap(foto, 0f, 0f, null);
    if (newImage.getWidth() > newImage.getHeight()) {
        Matrix matrix = new Matrix();
        matrix.postRotate(90);
        newImage.createBitmap(newImage, 0, 0, wid, hgt, matrix, true);

    }}

修改后的代码:

Bitmap bm = null;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 5;
AssetFileDescriptor fileDescriptor =null;
try {
    fileDescriptor = this.getContentResolver().openAssetFileDescriptor(selectedImage,”r”);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }finally{
    try {
        bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options);
        fileDescriptor.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    }


  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 41
博文 228
码字总数 181721
评论 (1)
周伟东
需要 Matrix.setRotate(90) 的时候呢?
×
今日竹石
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: