2017-09-21 3 views
-3

Je souhaite charger l'image du profil sur l'URL du site et la rendre circulaire à l'aide de la bibliothèque Picasso. Je fais comme,Créer une image circulaire à l'aide de picasso

dependencies { 
    compile 'com.squareup.picasso:picasso:2.4.0' 
} 

Load Image (R.drawable.profile_sample) à partir de ressources,

Picasso.with(getApplicationContext()).load(R.drawable.profile_sample).placeholder(setCircularImage(R.drawable.profile_sample)).into(imageView_ProfilePic); 

aussi de l'URL comme,

Picasso.with(getApplicationContext()).load("http://shidhints.com").placeholder(setCircularImage(R.drawable.profile_sample)).into(imageView_ProfilePic); 

J'utilise aussi setCircularImage() pour la image des ressources à la forme circulaire.

private RoundedBitmapDrawable setCircularImage(int id) { 
     Resources res = getApplicationContext().getResources(); 
     Bitmap src = BitmapFactory.decodeResource(res, id); 
     RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(res, src); 
     roundedBitmapDrawable.setCornerRadius(Math.max(src.getWidth(), src.getHeight())/2.0f); 
     return roundedBitmapDrawable; 
    } 
+0

https://stackoverflow.com/questions/30664254/using-picasso-library-with-a-circle-image-view –

+0

https://stackoverflow.com/questions/26112150/android-create-circular-image -with-picasso –

+0

hey mon pote utilise la bibliothèque imageview circulaire https://github.com/hdodenhof/CircleImageView et le charge en utilisant picasso. –

Répondre

1

J'ai créé une classe CircleTransform.java pour rendre l'image au cercle et modifié le code pour charger l'image de comme,

Picasso.with(getApplicationContext()).load(R.drawable.profile_sample).placeholder(setCircularImage(R.drawable.profile_sample)).transform(new CircleTransform()).into(imageView_ProfilePic); 

aussi de l'URL comme,

Picasso.with(getApplicationContext()).load("http://shidhints.com").placeholder(setCircularImage(R.drawable.profile_sample)).transform(new CircleTransform()).into(imageView_ProfilePic); 

CircleTransform.java

public class CircleTransform implements Transformation { 

    @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"; 
    } 
}