11

543 * 6423の解像度の画像がありますが、すべてのデバイスに表示したいと思います。それは高解像度を可能にするいくつかのAndroid携帯電話で表示されています。で試してみました

android:hardwareAccelerated="false"

これはAndroidクライアント用の私のJavaコードです

File storagePath =Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_DOWNLOADS+
                    "abc.png");
            InputStream is = this.getContentResolver().openInputStream(Uri.fromFile(storagePath)); 
            Bitmap b = BitmapFactory.decodeStream(is, null, null); 
            is.close(); 
            image.setImageBitmap(b);

これは私の携帯電話(sony xperia)で機能しましたが、他のいくつかの電話はそれを表示していません。画面の解像度に関係なくこの画像を表示するにはどうすればよいですか。

ありがとう、アマン

4

5 に答える 5

4

画像が大きすぎてほとんどのデバイスに表示できない可能性があります。そのため、縮小したバージョンの画像を読み込む必要があります。大きなビットマップを効率的にロードする方法を見て、これを実行し、適切なサンプルサイズを計算する方法を確認してください。表示の幅/高さが必要な場合(フルスクリーン画像の場合)、を使用できますgetResources().getDisplayMetrics()

于 2013-03-03T08:00:08.547 に答える
4

で試してみてください

android:hardwareAccelerated="false" 
android:largeHeap="true"
于 2014-05-06T10:44:42.153 に答える
0

まあ、多分私はあなたを助けるには遅すぎますが、これはうまくいけば他の人を助けることができます。私は最近、大きな画像の読み込みを処理できるオープンソースライブラリを開発しました。ソースコードとサンプルはhttps://github.com/diegocarloslima/ByakuGalleryで入手できます。

于 2014-01-04T22:19:46.310 に答える
0

ブログの解決策は2の累乗で間違っています...

解決策は次のとおりです。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;

// Set height and width in options, does not return an image and no resource taken
BitmapFactory.decodeStream(imagefile, null, options);

int pow = 0;
while (options.outHeight >> pow > reqHeight || options.outWidth >> pow > reqWidth)
    pow += 1;
options.inSampleSize = 1 << pow; 
options.inJustDecodeBounds = false;
image = BitmapFactory.decodeStream(imagefile, null, options);

画像はreqHeightとreqWidthのサイズで縮小されます。私が理解しているように、inSampleSizeは2の累乗の値しか取りません。

于 2014-02-27T12:41:01.977 に答える
0

このすべてのダウンサンプリングコードを手動で記述してデバッグするのに何時間も費やす代わりに、Picassoを使用してみませんか?これは人気のある画像読み込みライブラリであり、すべてのタイプやサイズのビットマップを処理するために作成されました。この1行のコードを使用して、「ビットマップが大きすぎます...」という問題を削除しました。

Picasso.with(image.getContext()).load(storagePath).fit().centerCrop().into(image);
于 2015-11-07T21:02:29.110 に答える