- // 举例子
- Picasso.with(this)
- // 设置图片的路径,可以是网络url,也可以是本地图片路径
- .load(R.mipmap.ic_back)
- // 设置图片采样率,一般设置为RGB565,这样会比RGB888节省一半左右的内存消耗
- .config(Bitmap.Config.RGB_565)
- // 设置输出的大小,设置为我们需要的大小,避免资源浪费
- .resize(width, height)
- // 设置是否需要缓存
- .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_CACHE)
- // 这是picasso最强大的地方我们下面看
- .transform(new Transformation())
- // 加载错误时默认的图片
- .error(R.mipmap.ic_launcher)
- // 照片的旋转角度
- .rotate(float rotate)
- // 需要展示的控件
- .into(showImg);
-
上面就是Picasso基本的用法,下面需要说一下transform方法。这是毕加索提供给我们的自己处理需要的效果的接口。即我们自己新建一个类去实现Transformation接口,复写两个方法:1.transform(Bitmap source);本方法的参数是加载的文件的位图,方法中我们写自己的逻辑。可以裁剪图片,修改采样率,旋转等等各种操作,也就是说,平时我们可以操作bitmap改变图片的方式都可以写在这里。2.key() return String;这个方法是我们设置记录这个处理过程的方法名字,如果你写了好几个实现transform的类,那么每一个这个key返回的字符串都需要不一样,否则picasso会缓存上一次你处理的效果的bitmap。
下面记录几种暂时我用到的处理:
- /**
- * picasso加载正方形图片,长宽比较取最小边
- * Created by ge on 2015/7/18.
- */
- public class CropSquareTransformation implements Transformation {
- //截取从宽度和高度最小作为bitmap的宽度和高度
- @Override
- public Bitmap transform(Bitmap source) {
- int x;
- int size = Math.min(source.getWidth(), source.getHeight());
- if (source.getWidth() >= source.getHeight()){
- x = (source.getHeight() - size) / 2;
- }else {
- x = (source.getWidth() - size) / 2;
- }
- Bitmap result = Bitmap.createBitmap(source, x, x, size, size);
- if (result != source) {
- source.recycle();
- }
- return result;
- }
- @Override
- public String key() {
- return "crop()";
- }
- }
接下来的是处理照片的颜色矩阵来达到改变图片效果的例子:
picasso使用
最新推荐文章于 2023-07-28 10:08:37 发布