如何使用picasso库直接加载位图,如下所示

时间:2016-01-06 09:18:44

标签: picasso

Picasso.with(context).load("url").into(imageView);

这里代替url我想要位图我怎么能实现这一点。 如下 -

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

4 个答案:

答案 0 :(得分:12)

这对你有用。 将返回的URI与Picasso一起使用。

(取自:is there away to get uri of bitmap with out save it to sdcard?

public Uri getImageUri(Context inContext, Bitmap inImage) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);
}

答案 1 :(得分:1)

您正在使用旧版的毕加索。

更新您的Gradle文件中的版本:

implementation 'com.squareup.picasso:picasso:2.71828'

Java:

Picasso.get().load(R.drawable.landing_screen).into(imageView1);
Picasso.get().load("file:///android_asset/DvpvklR.png").into(imageView2);
Picasso.get().load(new File(...)).into(imageView3);

See more details on the Picasso website

答案 2 :(得分:1)

我的Kotlin解决方案

根据数据创建位图

    val inputStream = getContentResolver().openInputStream(data.data)
    val bitmap = BitmapFactory.decodeStream(inputStream)
    val stream = ByteArrayOutputStream()
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream)

重要提示:如果您不需要存储图像,可以避免使用毕加索并立即加载图像

    imageView.setImageBitmap(bitmap)

否则将存储文件并使用Picasso加载

    val jpegData = stream.toByteArray()

    val file = File(cacheDir, "filename.jpg")
    file.createNewFile()

    val fileOS = FileOutputStream(file)
    fileOS.write(jpegData)
    fileOS.flush()
    fileOS.close()

    Picasso.get().load(Uri.parse(file.path)).into(imageView)

答案 3 :(得分:0)

private void loadBitmapByPicasso(Context pContext, Bitmap pBitmap, ImageView pImageView) {
    try {
        Uri uri = Uri.fromFile(File.createTempFile("temp_file_name", ".jpg", pContext.getCacheDir()));
        OutputStream outputStream = pContext.getContentResolver().openOutputStream(uri);
        pBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
        outputStream.close();
        Picasso.get().load(uri).into(pImageView);
    } catch (Exception e) {
        Log.e("LoadBitmapByPicasso", e.getMessage());
    }
}