Sembra che non si sta creando il bitmap correttamente, ma se io fossi nella tua posizione vorrei creare una bitmap in scala in questo modo:
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(
bm, 0, 0, width, height, matrix, false);
bm.recycle();
return resizedBitmap;
}
quindi impostarlo su un IMAGEVIEW in questo modo:
mImg.setImageBitmap(img);
complesso sarebbe simile a questa:
public void loadImage() {
Picasso.with(getBaseContext()).load("image url").into(new Target() {
// ....
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom arg1) {
// Pick arbitrary values for width and height
Bitmap resizedBitmap = getResizedBitmap(bitmap, newWidth, newHeight);
mImageView.setBitmap(resizedBitmap);
}
// ....
});
}
}
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth)/width;
float scaleHeight = ((float) newHeight)/height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(
bm, 0, 0, width, height, matrix, false);
bm.recycle();
return resizedBitmap;
}
Ma io interrogherò utilizzando Target
del tutto, di solito è per un caso molto specializzato. Dovresti chiamare il singleton di Picasso
nella stessa classe in cui visualizzi le immagini. Di solito questo è in una Adapter
(RecyclerView adattatore forse) in questo modo:
Picasso.with(mContext)
.load("image url")
.into(mImageView);
Grazie, ho già i metodi in vigore per il ridimensionamento (http://developer.android.com/training/displaying-bitmaps/load-bitmap .html). Avevo solo bisogno di caricare un'immagine da un URL in una bitmap (non direttamente in un ImageView), calcolata dai commenti sopra. Molte grazie. – Alex
Perché si sta utilizzando un'attività asincrona per caricare l'immagine. È possibile implementare semplicemente una richiamata nel .into (mImageView, new Callback <> {...}); – AndyRoid
In realtà, stavo cercando un modo rapido per caricare un'immagine in una bitmap che verrà quindi passata a una scheda (RecycleView), invece di caricarla dalla cartella delle risorse. Sto cercando di eseguire il debug di un problema descritto qui http://stackoverflow.com/questions/32554358/encountering-lag-when-updating-a-cardview-item-in-a-recycleview. Probabilmente cercherò di caricare l'immagine nella classe in cui verrà visualizzata. Ma penso che Picasso possa essere usato solo in una classe di attività, o almeno questo è ciò che ho capito da alcuni post. E presumo di aver bisogno di passare Context alla classe Adapter, giusto? – Alex