5

Android では、ギャラリーからスクリーンショットを開くと。2 秒間ぼやけてから、自動調整されます。

しかし、このスクリーンショット画像を使用して、画像パスを次のように使用して画像ビューに設定する場合:,

画像パス: /mnt/sdcard/ScreenCapture/SC20130219-124221.png

private void showImage(String imgPath) {
        // TODO Auto-generated method stub

        System.out.println("Image Path is:  "+imgPath);

        ImageView openImage=(ImageView)findViewById(R.id.img_fullScreen);
        ExifInterface exifMedia = null;
        try {
            exifMedia = new ExifInterface(imgPath);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String exifOrint = exifMedia.getAttribute(ExifInterface.TAG_ORIENTATION);
        int exifOrientation = Integer.parseInt(exifOrint);
        System.out.println("Orientation Tag is:"+exifOrientation);
        BitmapFactory.Options mOptions=new BitmapFactory.Options();
        mOptions.inSampleSize=2;
        Bitmap imgBitmap = BitmapFactory.decodeFile(imgPath,mOptions);
        //Runtime.getRuntime().gc();

        imgBitmap = getResizedBitmapImage(imgBitmap, 200, 200, exifOrientation);
        openImage.setImageBitmap(imgBitmap);
    }

別のケース: URL からビットマップを次のように取得している間:

URL url = new URL(urlTarget);
            BitmapFactory.Options mOptions = new BitmapFactory.Options();
            mOptions.inSampleSize=1;
            Bitmap bmp = BitmapFactory.decodeStream(url
                    .openConnection().getInputStream(),null,mOptions);

その場合、画像自体は自動調整されません。ぼやけています。これは私の問題です。

スクリーンショットのみの場合です。

ありがとう

4

3 に答える 3

1

mOptions.inSampleSize=2;これにより、代替ピクセルデータがスキップされ、元のサイズの1/2の画像が読み込まれます。もちろん、これは優れた画像スケーリングアルゴリズムにほど遠いため、ぼやけて高度にエイリアシングされたように見えます。

Galleryアプリに関する限り、フル解像度の画像がメモリに読み込まれている間、徐々に読み込まれ、サムネイルまたはクイックレンダリングが表示されます。

于 2013-03-02T08:11:55.807 に答える
0

コードをからに変更するmOptions.inSampleSize = 2mOptions.inSampleSize =1 、問題は確実に解決されます

于 2013-03-04T06:09:51.423 に答える
0

これは、Android ギャラリー アプリのトリッキーな動作にすぎません (また、大きな画像を読み込む必要がある場合にユーザー エクスペリエンスを向上させる方法を示す良い例でもあります)。
まず、ギャラリーで画像のサムネイルをクリックすると、そのサムネイルを正確に使用して ImageView に表示されます。サムネイルが小さく、ImageView を修正するために拡大する必要があるため、ぼやけて表示されます。
サムネイルをユーザーに表示しながら、元の画像もデコードします。すべてが完了すると、サムネイルの代わりに元の画像が表示されます。
ギャラリーは、サムネイルと元の画像を切り替えるときにもアニメーションを使用します (API デモで見つけることができるデフォルトのレイアウト アニメーション)

于 2013-03-02T05:30:45.890 に答える