Universalimageloader1.9.5上还没有对外提供获取图片的原大小功能,如果需要获取图片的源大小,可参考stackoverflow上的解决办法

stackoverflow地址

主要实现步骤如下:

1、自定义ImageDecoder

ImageDecoder不需要自己去实现,直接把项目自带的BaseImageDecoder上的代码拷出来即可。

2、定义map存放图片对应的原图大小信息


//存放源图片大小数据
protected static final Map<String, ImageSize> sizeMap = Collections.synchronizedMap(new HashMap<String, ImageSize>());

3、在decoder获取到图片大小以及图片信息后,将原图片大小信息保存起来。

public Bitmap decode(ImageDecodingInfo decodingInfo) throws IOException {
Bitmap decodedBitmap;
ImageFileInfo imageInfo; InputStream imageStream = getImageStream(decodingInfo);
if (imageStream == null) {
L.e(ERROR_NO_IMAGE_STREAM, decodingInfo.getImageKey());
return null;
}
try {
imageInfo = defineImageSizeAndRotation(imageStream, decodingInfo); //保存原图片大小信息
sizeMap.put(decodingInfo.getOriginalImageUri(), imageInfo.imageSize); imageStream = resetStream(imageStream, decodingInfo);
Options decodingOptions = prepareDecodingOptions(imageInfo.imageSize, decodingInfo);
decodedBitmap = BitmapFactory.decodeStream(imageStream, null, decodingOptions);
} finally {
IoUtils.closeSilently(imageStream);
} if (decodedBitmap == null) {
L.e(ERROR_CANT_DECODE_IMAGE, decodingInfo.getImageKey());
} else {
decodedBitmap = considerExactScaleAndOrientatiton(decodedBitmap, decodingInfo, imageInfo.exif.rotation,
orizontal);
}
return decodedtmap;

4、提供公开api给外部调用

    public static ImageSize getOriginSize(String url) {
return sizeMap.get(url);
}

5、只需要在需要的地方获取原图大小就可以了,比如在图片显示前或图片加载完成后获取原大小进行操作

  builder.preProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
ImageSize imageSize = BaseImageDecoder.getOriginSize(imageurl);
if (null != imageSize) {
//xxxx
} else {
//xxxxxxx
}
return bitmap;
}
});

最新文章

  1. 跨应用使用Spoon框架截图的方法
  2. python中__init__问题
  3. Spring MVC之@RequestBody, @ResponseBody 详解
  4. java内存模型-锁
  5. lvs简单配置
  6. ionic默认样式android和ios的一些不同(当时真是纠结啊~)
  7. Bootstrap 模态对话框 remote指定内容加载
  8. 谈话ZooKeeper(一个)分析ZooKeeper的Quorums机制--预防Split-Brain问题
  9. [2014-09-18]Entity Framework 6 预热、启动优化
  10. ubuntu14.04 解决屏幕亮度无法调节的问题
  11. 分布式计算框架学习笔记--hadoop工作原理
  12. AF_INET 和PF_INET区别;AF_LOCAL PF_LOCAL 区别.
  13. 【操作系统】二、JVM线程与Linux内核线程的映射
  14. jQuery 选择器 筛选器 样式操作 文本操作 属性操作 文档处理 事件 动画效果 插件 each、data、Ajax
  15. virtual 初探
  16. Easyui1.3.4+IIS6.0+IE8兼容问题解决
  17. oracle创建新的用户 创建序列 并生成自动自增
  18. 有趣:256个class选择器可以干掉1个id选择器——张鑫旭
  19. SQL简单基础(2)
  20. 流媒体协议之JRTPLIB的使用20170919

热门文章

  1. WPF中在Gmap.net中将Marker动起来
  2. 【认证与授权】Spring Security的授权流程
  3. 负载均衡服务之HAProxy基础配置(五)
  4. php中session_id()函数详细介绍,会话id生成过程及session id长度
  5. SESSION劫持
  6. build.gradle 详解(一)
  7. 利用CRM实现电话营销部门的管控 之数据暂缓
  8. dlopen failed: empty/missing DT_HASH in "libx.so" (built with --hash-style=gnu?)
  9. mybatis源码学习(三):MappedStatement的解析过程
  10. 关于IE8上传文件的一些问题