在做android图片加载的时候,由于手机屏幕受限,很多大图加载过来的时候,我们要求等比例缩放,比如按照固定的宽度,等比例缩放高度,使得图片的尺寸比例得到相应的缩放,但图片没有变形。显然按照android:scaleType不能实现,因为会有很多限制,所以必须要自己写算法。

通过Picasso来缩放 
其实picasso提供了这样的方法。具体是显示Transformation 的 transform 方法。 
(1) 先获取网络或本地图片的宽高 
(2) 获取需要的目标宽 
(3) 按比例得到目标的高度 
(4) 按照目标的宽高创建新图

  Transformation transformation = new Transformation() {@Overridepublic Bitmap transform(Bitmap source) {int targetWidth = mImg.getWidth();LogCat.i("source.getHeight()="+source.getHeight());LogCat.i("source.getWidth()="+source.getWidth());LogCat.i("targetWidth="+targetWidth);if(source.getWidth()==0){return source;}//如果图片小于设置的宽度,则返回原图if(source.getWidth()<targetWidth){return source;}else{//如果图片大小大于等于设置的宽度,则按照设置的宽度比例来缩放double aspectRatio = (double) source.getHeight() / (double) source.getWidth();int targetHeight = (int) (targetWidth * aspectRatio);if (targetHeight != 0 && targetWidth != 0) {Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false);if (result != source) {// Same bitmap is returned if sizes are the same
                      source.recycle();}return result;} else {return source;}}}@Overridepublic String key() {return "transformation" + " desiredWidth";}};

之后在Picasso设置transform

  Picasso.with(mContext).load(imageUrl).placeholder(R.mipmap.zhanwei).error(R.mipmap.zhanwei).transform(transformation).into(viewHolder.mImageView);

Transformation 这是Picasso的一个非常强大的功能了,它允许你在load图片 -> into ImageView 中间这个过成对图片做一系列的变换。比如你要做图片高斯模糊、添加圆角、做度灰处理、圆形图片等等都可以通过Transformation来完成。
参考文章: https://stackoverflow.com/questions/21889735/resize-image-to-full-width-and-variable-height-with-picasso

转载于:https://www.cnblogs.com/jiangzhishan/p/9415066.html

Android 使用Picasso加载网络图片等比例缩放相关推荐

  1. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  2. android listview动态加载网络图片不显示,Android Listview异步动态加载网络图片

    Android Listview异步动态加载网络图片 详见: http://blog.sina.com.cn/s/blog_62186b460100zsvb.html 标签: Android SDK ...

  3. Android 6种加载网络图片的第三方详解

    一. Glide加载 Glide.with(this).load("http://p0.qhimg.com/t015f3654b694ad2f8a.jpg").into(image ...

  4. jquery图片预加载+自动等比例缩放插件

    /* **************图片预加载插件****************** ///作者:没剑(2008-06-23) ///http://regedit.cnblogs.com ///说明: ...

  5. Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...

    在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...

  6. 【转载】一行代码加载网络图片到ImageView——Android Picasso

    原文链接:一句代码加载网络图片到ImageView--Android Picasso  注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...

  7. Android之图片加载框架Picasso源码解析

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/76645535 本文出自:[顾林海的博客] 个人开发的微信小程序,目前功 ...

  8. Android开发笔记(一百七十一)使用Glide加载网络图片

    如何方便而又快速地显示网络图片,一直是安卓网络编程的热门课题,前些年图片缓存框架Picasso.Fresco等等大行其道,以至于谷歌按捺不住也开发了自己的Glide开源库.由于Android本身就是谷 ...

  9. Android开发必备之Picasso加载图片

    为什么使用Picasso 传统的加载网络图片. public void saveToFile(String destUrl) {FileOutputStream fos = null;Buffered ...

最新文章

  1. 这款 20 万开发者使用的开发插件到底经历了什么?
  2. 【Java面试题】41 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?...
  3. OpenCV相机校准camera calibration的实例(附完整代码)
  4. 卓越只值1.5亿RMB?
  5. CS Academy Gcd Rebuild
  6. 资料分享 | 教程与开发手册资料分享来袭
  7. matlab用解析法求二自由度阻尼系统的自由振动(先求系统状态方程
  8. Android工程中追踪修改bug的总结
  9. 计算机网络是一个 系统,计算机网络是一个什么系统
  10. 软件工程第二次课课堂总结
  11. java命令行参数args_Args4J (Java 命令行参数控制开源项目) 使用指南
  12. Oracle 安装 与 卸载 以及 使用 plsqldev
  13. 2020年Spring学习笔记目录
  14. 线性表的顺序存储结构和链式存储结构
  15. Cosmos 是什么? 一文了解Cosmos的来龙去脉
  16. Jmeter Ant Jenkins报告优化——jmeter.results.shanhe.me模板的response和request值为空
  17. vue的过渡动画(有vue的动画库和ui库的介绍)
  18. 传小米要在A股港股同时上市;车好多完成8亿美元融资;三星市值蒸发近600亿美元丨价值早报
  19. ws2812怎么调亮度_深度解析OLED屏幕的低亮度DC调光是如何实现的?
  20. bzoj3265 志愿者招募加强版

热门文章

  1. 使用命令行结合jq提取出Kubernetes配置文件里的secret信息
  2. SAP CRM WebClient UI Abstract Page的Selenium实现
  3. 使用com.sun.imageio.plugins.png.PNGMetadata读取图片的元数据 1
  4. 为什么我的C4C Service Request没办法Release到ERP?
  5. PyFoam来实时输出残差
  6. 关抢占 自旋锁_关于Redis分布式锁这一篇应该是讲的最好的了,先收藏起来再看!...
  7. 二进制求和Python解法
  8. node install.js 很长_余生很长,放下错的人,才能拥抱属于你的幸福。很唯美的心灵鸡汤...
  9. java get和post区别_HTTP请求方式GET和POST区别
  10. 下载人脸认证助手_认证助手最新版