0

ビットマップ画像のサイズを変更したいので、以下のコードを使用しています

   BitmapFactory.Options bmOptions = new BitmapFactory.Options();
   bmOptions.inJustDecodeBounds = true;
   int photoW = bmOptions.outWidth;
   int photoH = bmOptions.outHeight;
   int scaleFactor = Math.min(photoW / 100, photoH / 100);
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(path, bmOptions);

しかし、私の問題は、このような描画可能なフォルダから画像を取得していることです

 Bitmap icon = BitmapFactory.decodeResource(getResources(),
                    Const.template[arg2]);

次の行で設定できるように、これをファイルパスに変換するにはどうすればよいですか?

        Bitmap bitmap = BitmapFactory.decodeFile(path, bmOptions);  

サイズ変更可能な画像を取得できます

4

2 に答える 2

1

わかりません、なぜ使いたいのdecodeFile()ですか?私はあなたが使うことができるとかなり確信しています

BitmapFactory.decodeResource(getResources(), Const.template[arg2]), bmOptions)

ドキュメント

于 2012-09-29T13:11:52.140 に答える
0

答えは以下のようになります

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {

            BitmapFactory.Options bmOptions = new BitmapFactory.Options();

            // If set to true, the decoder will return null (no bitmap), but
            // the out... fields will still be set, allowing the caller to
            // query the bitmap without having to allocate the memory for
            // its pixels.
            bmOptions.inJustDecodeBounds = true;
            int photoW = bmOptions.outWidth;
            int photoH = bmOptions.outHeight;

            // Determine how much to scale down the image
            int scaleFactor = Math.min(photoW / 100, photoH / 100);

            // Decode the image file into a Bitmap sized to fill the View
            bmOptions.inJustDecodeBounds = false;
            bmOptions.inSampleSize = scaleFactor;
            bmOptions.inPurgeable = true;
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), Const.template[arg2],bmOptions);

            Drawable draw = new BitmapDrawable(getResources(), bitmap);

            /* place image to textview */
            TextView txtView = (TextView) findViewById(R.id.imgChooseImage);
            txtView.setCompoundDrawablesWithIntrinsicBounds(draw, null,
                    null, null);
            position = arg2;
        }
    });
于 2012-09-29T13:20:49.527 に答える