2

携帯電話から写真を取得して配列に保存できます。その後、それらを画面に表示しています。しかし、それらはすべて異なる形とサイズです。それらをすべて同じサイズと形状で表示したい。何か案が?

photoPaths = new ArrayList<String>();   
     getAllPhotos(Environment.getExternalStorageDirectory(), photoPaths);
     images = new Bitmap[photoPaths.size()];


         apa = (AnimationPhotoView)findViewById(R.id.animation_view);
        for(int i=0;i<photoPaths.size();i++)
        {
            File imgFile = new  File(photoPaths.get(0));

            if(imgFile.exists())
            {

                images[0] = decodeFile(imgFile);}
4

4 に答える 4

7
    Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.tedd);

    int width = bitmapOrg.getWidth();

    int height = bitmapOrg.getHeight();


    int newWidth = 200;

    int newHeight  = 200;

    // calculate the scale - in this case = 0.4f

     float scaleWidth = ((float) newWidth) / width;

     float scaleHeight = ((float) newHeight) / height;

     Matrix matrix = new Matrix();

     matrix.postScale(scaleWidth, scaleHeight);
     matrix.postRotate(x);
     // this will create image with new size
     Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,width, height, matrix, true);

     iv.setScaleType(ScaleType.CENTER);
     iv.setImageBitmap(resizedBitmap);
于 2012-04-06T13:13:38.777 に答える
1

私は使っている:

Bitmap bitmap = //Your source

int newWidth = //compute new width
int newHeight = //compute new height

bitmap = Bitmap.createScaledBitmap(bitmap, scaleWidth, scaleHeight, true);

最後booleanfilterで、画像をより滑らかにします。

上記のMACによって提示されたソリューションは、IllegalArgumentException: bitmap size exceeds 32bits.

ただし、これはビットマップをスケーリングするだけで、回転しません。

于 2013-05-07T10:46:08.303 に答える
0

Android で「既知」の jpg 画像または画像形式を表示するだけの場合は、MediaStore.Images を使用してサムネイルを取得するだけで済みます。これはより高速で、必要なメモリが少なくて済み、画像は既にすべて同じ形式になっているはずです (幅+高さ)。

http://developer.android.com/reference/android/provider/MediaStore.Images.html

于 2012-04-06T13:13:39.513 に答える