1. ホーム

ImageLoader使用時、Bitmapが大きすぎてTextureにアップロードできない件について

2022-02-26 02:37:38

ImageLoadで画像を読み込む際、一部の画像が読み込めず、「Bitmap too large to be uploaded into the texture (440x6405, max=4096x4096)」という警告が表示されます。

ハードウェアアクセラレーションが有効な場合、GPUにはopenglRenderの制限があり、これは携帯電話によって異なるからです。

この上限は、canvas.getMaximumBitmapHeight()とcanvas.getMaximumBitmapWidth()で取得することが可能です。





ハードウェアアクセラレーションがない場合、このエラーは発生しないはずだが、検証はされていない、という原則について





ImageLoader処理では、ImageViewの最大高さと最大幅を設定することができます。

アンドロイド 最大高さ = <スパン "1000dip"。

アンドロイド 最大幅 = <スパン "1000dip"。

また、対応する scaleType は FIT_CENTER FIT_XY FIT_START FIT_END CENTER_INSIDE です。 

これらの scaleTypes の下では、ビットマップの高さと幅が設定された最大値より大きい場合、imageloader は自動的にそれを処理し、比例して拡大縮小することになります

scaleType が MATRIX CENTER CENTER_CROP の場合、imageloader は height と width の両方が設定された最大値より大きい場合にのみ処理します。





関連するウェブサイトのリファレンスを添付します。

https://github.com/nostra13/Android-Universal-Image-Loader/issues/98

http://blog.zfdang.com/2013/03/summary-of-image-processing-in-android/



http://stackoverflow.com/questions/7428996/hw-accelerated-activity-how-to-get-opengl-texture-size-limit