0

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

問題は、このステップにかなりの時間がかかることです。

これを速くする方法はありますか?

4

2 に答える 2

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スレッドをブロックしないように、非同期または別のスレッドタスクでこれを行うようにしてください。

于 2012-10-06T11:47:38.880 に答える
0

高速化する方法はありませんが、UI スレッドをブロックしないでください。見る

  1. AsyncTask (およびAsyncTask を使用して ListView に画像をロードするなどの多くの関連する質問)
  2. LruCache
于 2012-10-06T11:32:40.963 に答える