android – 使用BitmapRegionDecoder加载jpeg会产生棋盘格扭曲

android – 使用BitmapRegionDecoder加载jpeg会产生棋盘格扭曲,第1张

概述我正在使用来自URLConnection的InputStream从url加载一个大的jpeg文件.目标是使用图像数据获取int [],因为这比使用Bitmap进一步使用更有效.这里有两个选择. 第一种是创建一个Bitmap对象并将结果复制到int []中.这适用于我的应用程序,但是在加载时整个图像在内存中两次,因为图像数据被复制到int []图像中. Bitmap full = BitmapFac 我正在使用来自URLConnection的inputStream从url加载一个大的jpeg文件.目标是使用图像数据获取int [],因为这比使用Bitmap进一步使用更有效.这里有两个选择.

第一种是创建一个Bitmap对象并将结果复制到int []中.这适用于我的应用程序,但是在加载时整个图像在内存中两次,因为图像数据被复制到int []图像中.

Bitmap full = BitmapFactory.decodeStream(conn.getinputStream());full.getPixels(image,wIDth,height);

为了节省内存,我正在尝试使用BitmapRegionDecoder以平铺方式执行此过程.

int block = 256;BitmapRegionDecoder decoder = BitmapRegionDecoder.    newInstance(conn.getinputStream(),false);Rect tileBounds = new Rect();// loop blocksfor (int i=0; i<height; i+=block) {    // get vertical bounds limited by image height    tileBounds.top = i;    int h = i+block<height ? block : height-i;    tileBounds.bottom = i+h;    for (int j=0; j<wIDth; j+=block) {        // get hotizontal bounds limited by image wIDth        tileBounds.left = j;        int w = j+block<wIDth ? block : wIDth-j;        tileBounds.right = j+w;        // load tile        tile = decoder.decodeRegion(tileBounds,null);        // copy tile in image        int index = i*wIDth + j;        tile.getPixels(image,index,w,h);    }}

从技术上讲,这是有效的,我在int []图像中获得完整的图像.瓷砖也无缝地插入图像中.

现在我的问题.第二种方法导致图像具有某种奇怪的棋盘扭曲.像素似乎在略微更暗或略微更轻之间交替. BitmapRegionDecoder应该支持jpeg,而BitmapFactory.decodeStream没有问题.这里有什么问题?

解决方法 找到了!显然,如果你将null提供给decoder.decodeRegion(tileBounds,null);它返回一个质量为Bitmap.Config.RGB_565的Bitmap(不确定这是否依赖于设备).简单地为它提供一个新的选项集返回Bitmap.Config.RGB_ARGB8888质量的位图.默认情况下,设置此首选质量.

BitmapFactory.Options options = new BitmapFactory.Options();...// load tiletile = decoder.decodeRegion(tileBounds,options);
总结

以上是内存溢出为你收集整理的android – 使用BitmapRegionDecoder加载jpeg会产生棋盘格扭曲全部内容,希望文章能够帮你解决android – 使用BitmapRegionDecoder加载jpeg会产生棋盘格扭曲所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存