【问题标题】:Android , createScaledBitmap slow when creating multiple bitmapsAndroid,createScaledBitmap 创建多个位图时速度慢
【发布时间】:2013-10-21 01:35:18
【问题描述】:

我正在使用下面的代码来创建一个调整大小的位图,代码可以正常工作,但是速度很慢。问题是,当我尝试将其用于多个图像时,手机会冻结,直到创建图像。

这是我的代码:

Bitmap bitmap = null;
File imgFile = new File(my_pic_file);
if(imgFile.exists()) {
  bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
  Bitmap resizedBitmap = Bitmap.createScaledBitmap(bitmap, 300, 200, false);
  first_image.setImageBitmap(resizedBitmap);
}

【问题讨论】:

    标签: android image file bitmap


    【解决方案1】:

    问题是您正在主线程上进行工作。这意味着它将冻结 UI,直到所有处理完成。您可以通过使用线程或异步任务来解决此问题。

     private class LoadImageTask extends AsyncTask<String, Void, Bitamp> {
    
     private ImageView mImageView = null;
    
     public LoadImageTask(ImageView imageView) {
    
        mImageView = imageView;
     }
    
     protected Bitmap doInBackground(String... file) {
    
        Bitmap bitmap = null;
        Bitmap resizedBitmap = null;
        File imgFile = new File(file);
        if(imgFile.exists()) {
          bitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
          resizedBitmap = Bitmap.createScaledBitmap(bitmap, 300, 200, false);
        }
    
        return resizedBitmap;
     }
    
     protected void onPostExecute(Bitmap result) {
         if (result != null && mImageView != null) {
    
            mImageView.setImageBitmap(result);
         }
     }
    

    然后在你的代码中调用

    new LoadImageTask(first_image).execute(my_pic_file);
    

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      相关资源
      最近更新 更多