我的Android应用程序有问题。 我使用一个应用程序,用手机/平板电脑的相机构建图片。由于相机的高分辨率,这些图片有时非常大。
现在我加载应用程序并创建一个listView,其中图片的小缩略图在左侧,右侧是一些文本。
我用这种方式创建图片:
Bitmap a = BitmapFactory.decodeFile(url);
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
(float) 66.0, context.getResources().getDisplayMetrics());
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
(float) 48.0, context.getResources().getDisplayMetrics());
Bitmap b = Bitmap.createScaledBitmap(a, width, height, false);
问题是这个步骤需要相当长的时间。
有没有办法让它更快?
答案 0 :(得分:0)
没有办法让它更快,但你不应该阻止UI线程。参见
答案 1 :(得分:0)
这是我从这里采用的解决方案:https://stackoverflow.com/a/5934983/1369222
效果很好!
byte[] imageData = null;
try
{
final int THUMBNAIL_SIZE = 64;
FileInputStream fis = new FileInputStream(fileName);
Bitmap imageBitmap = BitmapFactory.decodeStream(fis);
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, THUMBNAIL_SIZE, THUMBNAIL_SIZE, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
imageData = baos.toByteArray();
}
catch(Exception ex) {
}
确保在异步或单独的线程任务中执行此操作,这样就不会阻止UI线程!