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

2022-09-01 12:12:17
Picasso.with(context).load("url").into(imageView);

在这里,而不是URL,我想要位图,我怎么能做到这一点。如下图所示-

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

答案 1

这应该适合您。将返回的 URI 与毕加索一起使用。

(取自:有没有离开的位图的uri,没有把它保存到SD卡?)

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);
}

答案 2

我的 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)

否则,请存储文件并与毕加索一起加载

    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)

推荐