0

私のプログラムには2つの問題があります:1。写真を撮った後、これはonActivityResult()に対して私が持っているものです:

        pictureTaken = (Bitmap) data.getExtras().get("data");
        ImageView im = (ImageView) findViewById(R.id.view);
        im.setImageBitmap(pictureTaken);

サムネイルしか表示されず(表示時の品質が悪い)、SDカードに保存すると小さな画像になります。私が必要としているのは、フル解像度/品質で保存/表示することです。これを達成するために何を変更しますか?

  1. ユーザーが選択した画像の取得と表示は次のように機能します。

    selectedImage = data.getData();
    ImageView im = (ImageView) findViewById(R.id.view);
    im.setImageURI(selectedImage);
    

しかし、ユーザーが選択した画像を保存すると、ここでクラッシュします(デバッガーによって検出されます)。

...
File externalStorageFile = new File(dir, finalName);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
//Error
resourceImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
byte b[] = bytes.toByteArray();
try {
...

また、Androidで画像を保存する唯一の方法はビットマップですか?

4

2 に答える 2

0

画像をSDカードに保存するには、以下のコードを使用してください

    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    File file = new File(extStorageDirectory, imagename);
    file.createNewFile();
    FileOutputStream fos = new  FileOutputStream(file);
    bm.compress(CompressFormat.JPEG, 75, fos);
    fos.flush();
    fos.close();
于 2011-06-22T11:10:13.523 に答える
0

サンプルについては、このリンクを確認してください。ギャラリーから選択した画像にビットマップの範囲外の例外が表示される場合は、画像をデコードする必要があります。

画像を画面サイズに拡大縮小...。

ギャラリーから画像を選択してデコードします......。

于 2011-06-22T11:56:44.350 に答える