私はこれをどのように解決できるかについてstackoverflowを見回していました。私は次の結論に達しました:
- これは、 「ビットマップが大きすぎてテクスチャにアップロードできない」という個々のデバイスGL_MAX_TEXTURE_SIZEに基づいており、jptsetungの回答と、ハードウェアアクセラレーションアクティビティを示す基本的なコメント-OpenGLテクスチャサイズ制限を取得する方法は?RomainGuyにしっかりとした理解を与えてもらいます。
- デバイスが処理できるソートデータを理解する必要があります。
次のコードを実行する場合、2を使用すると画像のサイズが4分の1になります。
BitmapFactory.Options ops = new BitmapFactory.Options();
opts.inSampleSize = 2;
この理解は、幅と高さが半分になるため、サイズが4分の1になるという概念に基づいています。
- 私のようにハードコーディングしたくない場合。GL_MAX_TEXTURE_SIZEを使用して、それが何であるかを判断するのに役立てることができます。
最後に、私が行ったことは、ビットマップを使用してimageviewを取得し、それにMATRIXを割り当ててから、マトリックスを次のようにスケーリングしたことです。
Matrix m = new Matrix();
m.postScale(scaleX,scaleY);
これにより、画像のサンプルを取得して画像を小さくし、同じサイズを維持するように拡大することができます。inSampleSizeは、スケールアップするためのscaleXとscaleYの両方のサイズです。
考えられる問題:ピクセル化。画像のサイズにもよりますが、それほど悪くはありませんが、その一部が表示されます。
これは、デバイスの制約を解決するためです。画像の幅と高さがどれくらい大きいかを確認します。それが>GL_MAX_TEXTURE_SIZEの場合は、計算を行って、値の下に配置します。
そして私は次の標準的なものは次のようになると信じています:
..。
利益!