0

私は ImageButton を持っています。それを押すと、携帯電話で写真を撮ることができます。写真を撮ると、ImageButtons は画像をソースとして取得します。しかし問題は、画像が ImageButton のサイズに縮小されないことです。縮小するのではなく、Imagebutton に画像の一部を表示するだけです。少し調べたところ、ドロー 9 パッチを使用する必要があることがわかりました。しかし、この場合、それは不可能です。画像は私のリソースになく、ユーザー自身によって作成されたものだからです。

誰かがこれで私を助けることができますか?

私のコード:

if (requestCode == REQUEST_CAMERA) {
    File f = new File(Environment.getExternalStorageDirectory().toString());
    for (File temp : f.listFiles()) {
        if (temp.getName().equals("temp.jpg")) {
            f = temp;
            break;
        }
    }

    try {
        Bitmap bm;
        BitmapFactory.Options btmapOptions = new BitmapFactory.Options();
        bm = BitmapFactory.decodeFile(f.getAbsolutePath(),btmapOptions);
        // bm = Bitmap.createScaledBitmap(bm, 70, 70, true);
        btnImg.setImageBitmap(bm);
        String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default";
        f.delete();
        OutputStream fOut = null;
        File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");

        try {
                fOut = new FileOutputStream(file);
            bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut);
            fOut.flush();
            fOut.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } catch (Exception e) {
            e.printStackTrace();
        }
            }
} 
else if (requestCode == SELECT_FILE) {
Uri selectedImageUri = data.getData();
String tempPath = getPath(selectedImageUri, MainActivity.this);
Bitmap bm;
BitmapFactory.Options btmapOptions = new BitmapFactory.Options();
bm = BitmapFactory.decodeFile(tempPath, btmapOptions);
btnImg.setImageBitmap(bm);
}
4

1 に答える 1

0

ImageView のメソッドを使用しますsetScaleType。パラメータとして渡しScaleType.CENTER_INSIDEます。

btnImg.setImageBitmap(bm);
btnImg.setScaleType(ScaleType.CENTER_INSIDE);
于 2013-05-04T19:21:17.220 に答える