Android 位图太大,无法上载到纹理(通用图像加载器)
我以前成功地使用过相同的图像,没有任何问题。这种行为似乎是错误的,至少在我看来是怪异的Android 位图太大,无法上载到纹理(通用图像加载器),android,bitmap,android-imageview,universal-image-loader,Android,Bitmap,Android Imageview,Universal Image Loader,我以前成功地使用过相同的图像,没有任何问题。这种行为似乎是错误的,至少在我看来是怪异的 UIL版本:GitHub,提交日期:2014年1月28日 Android版本:4.3(Galaxy Nexus) 我的代码和堆栈跟踪: 02-03 00:11:48.343: D/ImageLoader(6701): Start display image task [http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-i
- UIL版本:GitHub,提交日期:2014年1月28日
- Android版本:4.3(Galaxy Nexus)
02-03 00:11:48.343: D/ImageLoader(6701): Start display image task [http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-in-the-desert.-2560x1080-Imgur.jpg_720x1184]
02-03 00:11:48.343: D/ImageLoader(6701): Load image from disc cache [http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-in-the-desert.-2560x1080-Imgur.jpg_720x1184]
02-03 00:11:48.398: D/dalvikvm(6701): GC_FOR_ALLOC freed 922K, 3% free 34681K/35664K, paused 51ms, total 51ms
02-03 00:11:48.476: I/dalvikvm-heap(6701): Grow heap (frag case) to 49.525MB for 16384016-byte allocation
02-03 00:11:48.507: D/dalvikvm(6701): GC_FOR_ALLOC freed 1K, 2% free 50679K/51668K, paused 32ms, total 32ms
02-03 00:11:48.875: D/ImageLoader(6701): Cache image in memory [http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-in-the-desert.-2560x1080-Imgur.jpg_720x1184]
02-03 00:11:48.875: D/ImageLoader(6701): Display image in ImageAware (loaded from DISC_CACHE) [http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-in-the-desert.-2560x1080-Imgur.jpg_720x1184]
02-03 00:11:48.882: W/OpenGLRenderer(6701): Bitmap too large to be uploaded into a texture (2560x1600, max=2048x2048)
应用程序:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).writeDebugLogs().build();
ImageLoader.getInstance().init(config);
片段:
String imageURI= "http://cdn.screenrant.com/wp-content/uploads/A-Stormtrooper-lost-in-the-desert.-2560x1080-Imgur.jpg";
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true).build();
ImageLoader.getInstance().displayImage(imageURI, imageView, options);
xml:(这应该是AlertDialog的customTitle):
如果我没有记错的话,此图像已缩小为720x1184
。如果这是真的,那么它为什么尝试使用原始图像2560x1600
我想这可能是一个错误,或者我遗漏了什么
如果这不是一个bug,我能做些什么来解决它呢?当我遇到类似的问题时,我在GitHub上遇到了。问题似乎涉及到centerCrop,它希望在裁剪之前使用比目标更大的图像。我无法解释为什么调试日志使用缩小的图像显示它,但我可以说,在我的例子中,我通过向DisplayImageOptions添加以下内容使它工作:
.imageScaleType(ImageScaleType.EXACTLY)
GitHub的问题还表明,FIT\u CENTER
、FIT\u XY
、FIT\u START
、FIT\u END
和CENTER\u INSIDE
的scaleType将表现得更好
.imageScaleType(ImageScaleType.EXACTLY)