Android: crear imagen circular con picasso

La pregunta se había hecho y había habido una promesa hecha para la versión misma de Picasso que estoy usando: ¿Cómo envío un mapa de bits circular a un ImageView usando Picasso? Soy nuevo en Picasso y lo único que he usado es

Picasso.with(context).load(url).resize(w, h).into(imageview); 

Ya he encontrado https://gist.github.com/julianshen/5829333 pero no estoy seguro de cómo combinar con la línea de arriba de una manera no torpe.

Investigue un poco antes ya que hay respuestas disponibles. De todos modos, siga este enlace y léalo con cuidado para saber cómo usarlo.

prueba esto:

 import com.squareup.picasso.Transformation; 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"; } } 

Entonces simplemente aplícalo como:

 Picasso.with(activity).load(mayorShipImageLink).transform(new CircleTransform()).into(ImageView); 

Aquí es algo que es proporcionado por la biblioteca de soporte-v4 ! Mire en RoundedBitmapDrawable . No hay necesidad de rodar el suyo propio:

 Picasso.with(context).load(url) .resize(w, h) .into(myImageView, new Callback() { @Override public void onSuccess() { Bitmap imageBitmap = ((BitmapDrawable) myImageView.getDrawable()).getBitmap(); RoundedBitmapDrawable imageDrawable = RoundedBitmapDrawableFactory.create(getResources(), imageBitmap); imageDrawable.setCircular(true); imageDrawable.setCornerRadius(Math.max(imageBitmap.getWidth(), imageBitmap.getHeight()) / 2.0f); myImageView.setImageDrawable(imageDrawable); } @Override public void onError() { myImageView.setImageResource(R.drawable.default_image); } }); 

Nota: Picasso también tiene una llamada de .transform (customTransformation) que podría teóricamente usar, sin embargo, tenía problemas con eso. Esto arriba funciona. ¡Buena suerte!

He intentado todas las soluciones anteriores, pero ninguna de ellas me da círculo transformar sin recortar la imagen .. esa solución funcionará sólo para imágenes con el mismo ancho y la altura .. esta es mi solución en la parte superior

primero ——

 Picasso.with(getActivity()) .load(url) .error(R.drawable.image2) .placeholder(R.drawable.ic_drawer) .resize(200, 200) .transform(new ImageTrans_CircleTransform()) .into(imageView1); 

Entonces haz esto

 import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Shader.TileMode; import com.squareup.picasso.Transformation; public class ImageTrans_CircleTransform implements Transformation { @Override public Bitmap transform(Bitmap source) { if (source == null || source.isRecycled()) { return null; } final int width = source.getWidth() + borderwidth; final int height = source.getHeight() + borderwidth; Bitmap canvasBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); BitmapShader shader = new BitmapShader(source, TileMode.CLAMP, TileMode.CLAMP); Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(shader); Canvas canvas = new Canvas(canvasBitmap); float radius = width > height ? ((float) height) / 2f : ((float) width) / 2f; canvas.drawCircle(width / 2, height / 2, radius, paint); //border code paint.setShader(null); paint.setStyle(Paint.Style.STROKE); paint.setColor(bordercolor); paint.setStrokeWidth(borderwidth); canvas.drawCircle(width / 2, height / 2, radius - borderwidth / 2, paint); //-------------------------------------- if (canvasBitmap != source) { source.recycle(); } return canvasBitmap; } @Override public String key() { return "circle"; } } 

Otra alternativa que encontré fue esta biblioteca de chicos. Trabaja independientemente, o en conjunción con Picasso. Elegí la ruta Picasso, como a continuación:

https://github.com/vinc3m1/RoundedImageView

 Transformation transformation = new RoundedTransformationBuilder() .borderColor(Color.BLACK) .borderWidthDp(3) .cornerRadiusDp(30) .oval(false) .build(); Picasso.with(context) .load(url) .fit() .transform(transformation) .into(imageView); 

Trabajó para mí!

Utilice esta biblioteca para crear una imagen circular. Para crear un ImageView circular, agregue esta biblioteca CircularImageView a su proyecto y añada CircularImageView en su diseño XML

 <com.pkmmte.view.CircularImageView android:layout_width="250dp" android:layout_height="250dp" android:src="@drawable/image" app:border_color="#EEEEEE" app:border_width="4dp" app:shadow="true" />` 

A continuación, utilice picasso para cargar la imagen necesaria en esta imagen. Picasso hace todo el almacenamiento en caché que no necesita preocuparse por ello

Incluya el xml dibujable del tipo Layer-list con el código de abajo

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/shape_status"> <shape android:shape="oval"> <solid android:color="@android:color/black"/> </shape> </item> <item android:drawable="@drawable/ic_status_content"/></layer-list> 

A continuación, utilice el xml a su ImageView en el android.src

  <ImageView android:id="@+id/iconStatus" android:layout_width="55dp" android:layout_height="55dp" android:layout_gravity="right" android:src="@drawable/ic_circle_status" android:layout_alignParentTop="true" android:layout_alignParentEnd="true"/> 

Este trabajo para mí

 <com.androidhub4you.crop.RoundedImageView android:id="@+id/imageView_round" android:layout_width="100dp" android:layout_height="100dp" android:layout_marginTop="15dp" android:src="@drawable/ic_launcher" /> 

http://www.androidhub4you.com/2014/10/android-custom-shape-imageview-rounded.html

  • ¿Por qué Picasso no está usando imageView.getContext ()?
  • Picasso - obtener el camino de la imagen cargada
  • Android: cargar archivo svg desde la web y mostrarlo en la vista de imagen
  • ¿Cómo obtengo una paleta para mi mapa de bits una vez que Picasso Loads?
  • ¿Cómo integrar Google Drive con Picasso en Android?
  • Cómo cargar un mapa de bits con Picasso sin usar un ImageView?
  • Android: utilice picasso para cargar imágenes sin almacenarlas en caché
  • Android Picasso Configurar el tamaño de LruCache
  • ImageView con mapas de bits descargados desde URL (modo de repetición de mosaico)
  • Cómo mostrar el porcentaje de descarga al cargar imágenes en Picasso
  • Biblioteca de Android Picasso o Glide?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.