Utilice Picasso para colocar la imagen en dibujable
Estoy intentando utilizar Picasso desde Square para extraer un jpg de una URL y luego añadir a un EditText. La razón de Picasso es que es muy ligero en la implementación. Como se puede ver, estoy usando un marcador de posición ImageView, mediante el cual Picasso importará la imagen desde la URL proporcionada, y luego convertiré ImageView en Drawable. Lo mismo ocurre con ImageGetter. Sin embargo, recibo un error de puntero nulo al usar la configuración a continuación. (Tenga en cuenta que al usar un drawable de los recursos de la aplicación en lugar de la variable 'drawImage' a continuación, esta configuración funciona, pero estoy tratando de extenderla para extraer recursos de una URL).
¿Hay algo fuera de lugar aquí? ¿O una manera más eficiente de hacer esto?
- Picasso: cómo cancelar todas las peticiones de imagen hechas en un adaptador
- Cargando imágenes con Picasso desde el almacenamiento interno
- ¿Cómo puedo utilizar un color como imagen de marcador de posición con Picasso?
- Transición de elementos compartidos de Android: transformación de un ImageView de un círculo a un rectángulo y viceversa
- Picasso onBitmapLoaded nunca llamado
Método para añadir a EditText:
public void appendToMessageHistory(String username, String message) { if (username != null && message != null) { ImageView image = new ImageView(getApplicationContext()); Picasso.with(getBaseContext()).load("http://localhost:3000/uploads/campaign/image/2/2.jpg").into(image); Drawable drawImage = image.getDrawable(); messageHistoryText.append(Html.fromHtml("<b>" + username + ":" + "</b>" + "<br>")); messageHistoryText.append(Html.fromHtml(message + "<hr>" + "<br>") + System.getProperty("line.separator") + ""); messageHistoryText.append(Html.fromHtml("<img src = '" + drawImage + "'/>", imageGetter, null)); } }
El ImageGetter:
ImageGetter imageGetter = new ImageGetter() { @Override public Drawable getDrawable(String source) { ImageView image = new ImageView(getApplicationContext()); Picasso.with(getBaseContext()).load("http://localhost:3000/uploads/campaign/image/2/2.jpg").into(image); Drawable drawImage = image.getDrawable(); drawImage.setBounds(0, 0, drawImage.getIntrinsicHeight(), drawImage.getIntrinsicWidth()); return drawImage; }
};
- Aplicación de Android se bloquea para algunos usuarios al aplicar la transformación con Picasso
- Cómo recuperar la rotación de miniaturas
- HorizontalGridView / RecyclerLa posición de desplazamiento se restablece una vez que la imagen de Picasso se carga
- Picasso imagen cargando
- Cómo cargar miniaturas de video usando la biblioteca cuadrada picasso?
- Problema de carga de imagen de Picasso en GoogleMap.InfoWindowAdapter
- ¿Cómo implementar correctamente el feed (similar a Facebook / Instagram) en Android?
- Android Studio Picasso gif loading image para marcador de posición
Hay algo que extrañas de Picasso. Puede establecer una clase de destino anonymous en el método inTo como y establecer bitmap en cualquier objeto que tenga:
Picasso.with(getBaseContext()).load("your url").into(new Target() { @Override public void onPrepareLoad(Drawable arg0) { } @Override public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { // TODO Create your drawable from bitmap and append where you like. } @Override public void onBitmapFailed(Drawable arg0) { } });
EDIT para que esto es cómo hacer eso:
public void appendToMessageHistory(String username, String message) { if (username != null && message != null) { ImageView image = new ImageView(getApplicationContext()); Picasso.with(getBaseContext()).load("image url").into(new Target() { @Override public void onPrepareLoad(Drawable arg0) { } @Override public void onBitmapLoaded(Bitmap bitmap, LoadedFrom arg1) { Drawable drawImage = new BitmapDrawable(getBaseContext().getResources(),bitmap); messageHistoryText.append(Html.fromHtml("<b>" + username + ":" + "</b>" + "<br>")); messageHistoryText.append(Html.fromHtml(message + "<hr>" + "<br>") + System.getProperty("line.separator") + ""); messageHistoryText.append(Html.fromHtml("<img src = '" + drawImage + "'/>", imageGetter, null)); } @Override public void onBitmapFailed(Drawable arg0) { } }); } }