繁体   English   中英

如何处理大量图片。 哪些缩略图会显示在android应用中?

[英]How to handle large amount of pictures. which thumbnails sould be shown in android app?

我的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);

问题在于此步骤需要相当长的时间。

有什么办法可以使速度更快?

没有办法使其更快,但您不应阻塞UI线程。 看到

  1. AsyncTask(以及许多相关问题,例如使用AsyncTask在ListView中加载图像
  2. LruCache

这是我在这里使用的解决方案: 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线程!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM