picasso初级基础

图片缓存(使用picasso框架进行处理)
picasso介绍:
picasson中的常用方法:
  • Picasso.with(context)     创建Picasso对象
  • Picasso.with(context).load(imageUrl).into(imageView);
    • 自动将图像缓存在本地
    • 通过图片压缩转换以减少内存消耗     
  • Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView);
剪裁大小
  • Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.ic);
占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置
  • Picasso.with(context).load(R.drawable.icon).into(imageView);    
  • Picasso.with(context).load("file:///android_asset/Adnroid.png").into(imageView);
  • Picasso.with(context).load(new File(...)).into(imageView);
载入本地图片资源(以上3个)
  • Picasso.with(mContext).load(url).transform(transform)
自定义图片裁剪方式

使用方式:

  1. 导入框架

导入的位置:Project Structure Dependencies  

框架名称:com.squareup.picasso:picasso:2.5.2

 

  1. 通过Picasso调用方法实现相应功能即可
  2. picasso中的常用方法:

Picasso.with(context)     创建Picasso对象

 

Picasso.with(context).load(imageUrl).into(imageView);

自动将图像缓存在本地

通过图片压缩转换以减少内存消耗

 

Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView);  剪裁大小

 Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.ic);

占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置

加载本地图片:

Picasso.with(context).load(R.drawable.icon).into(imageView);

Picasso.with(context).load("file:///android_asset/Adnroid.png").into(imageView);

Picasso.wiht(context).load(new File(...)).into(imageView);

 

Picasso.with(mContext).load(url).transform(transform)

自定义图片裁剪方式

自定义裁剪的具体实现:

  1. 创建一个picasso包中的Transformation的子类
  2. 重写子类中的transform方法和key方法
  3. 通过Picasso对象调用tranform方法设置此子类对象即可

 

public class MyRoundTran implements Transformation {

    /*
    * 参数:下载好的原图片
    * 返回值: 裁剪好的图片
    *
    * 处理图片的裁剪
    * */
    
@Override
    public Bitmap transform(Bitmap source) {
        //实现图片加圆角效果
        
Bitmap bitmap = Bitmap.createBitmap(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);

        Paint paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.BLUE);

        RectF rc = new RectF(0,0,source.getWidth(),source.getHeight());
        canvas.drawRoundRect(rc,30,30,paint);

        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

        canvas.drawBitmap(source,0,0,paint);

        source.recycle();
        return bitmap;
    }

    //通过返回值给自定义的裁剪方式设置一个名字key
    
@Override
    public String key() {
        return "ayRound";
    }
}

生成圆形图片:
 
public  CircleTransformation(Picasso picasso) {
         this .picasso = picasso;
     }
 
     @Override
     public  Bitmap transform(Bitmap source) {
         int  size = Math.min(source.getWidth(), source.getHeight());
 
         int  x = (source.getWidth() - size) /  2 ;
         int  y = (source.getHeight() - size) /  2 ;
 
         Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size);
         if  (squaredBitmap != source) {
             source.recycle();
         }
 
         Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig());
 
         Canvas canvas =  new  Canvas(bitmap);
         Paint paint =  new  Paint();
         BitmapShader shader =  new  BitmapShader(squaredBitmap,
                 BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
         paint.setShader(shader);
         paint.setAntiAlias( true );
 
         float  r = size / 2f;
         canvas.drawCircle(r, r, r, paint);
 
         squaredBitmap.recycle();
         return  bitmap;
     }
 
     @Override
     public  String key() {
         return  "circle" ;
     }
 
}
 
 
 
 
 
 
生成灰色图片:
 
public  class  GrayscaleTransformation  implements  Transformation {
 
   private  final  Picasso picasso;
 
   public  GrayscaleTransformation(Picasso picasso) {
     this .picasso = picasso;
   }
 
   @Override  public  Bitmap transform(Bitmap source) {
     Bitmap result = createBitmap(source.getWidth(), source.getHeight(), source.getConfig());
     Bitmap noise;
     try  {
       noise = picasso.load(R.drawable.noise).get();
     catch  (IOException e) {
       throw  new  RuntimeException( "Failed to apply transformation! Missing resource." );
     }
 
     BitmapShader shader =  new  BitmapShader(noise, REPEAT, REPEAT);
 
     ColorMatrix colorMatrix =  new  ColorMatrix();
     colorMatrix.setSaturation( 0 );
     ColorMatrixColorFilter filter =  new  ColorMatrixColorFilter(colorMatrix);
 
     Paint paint =  new  Paint(ANTI_ALIAS_FLAG);
     paint.setColorFilter(filter);
 
     Canvas canvas =  new  Canvas(result);
     canvas.drawBitmap(source,  0 0 , paint);
 
     paint.setColorFilter( null );
     paint.setShader(shader);
     paint.setXfermode( new  PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
 
     canvas.drawRect( 0 0 , canvas.getWidth(), canvas.getHeight(), paint);
 
     source.recycle();
     noise.recycle();
 
     return  result;
   }
 
   @Override  public  String key() {
     return  "grayscaleTransformation()" ;
   }
}

     
































 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值