位图没有被压缩,可以在whats应用程序上共享



我正在使用camera拍摄图像API图像正在成功拍摄,然后我使用以下方法将其转换为位图

fun Image.toBitmap(): Bitmap {
val buffer = planes[0].buffer
buffer.rewind()
val bytes = ByteArray(buffer.capacity())
buffer.get(bytes)
return BitmapFactory.decodeByteArray(bytes, 0, bytes.size)
}

这个方法非常有效,我成功地将BitMapImage设置为图像视图。问题是,我想在应用程序视图意图上共享这个捕获的位图图像,而不保存在存储中下面的方法是我用来压缩位图的

private fun btmToPng(){
try {
val baos = ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, baos)
baos.close()
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
}

但是得到这个错误

原因:android.os.TransactionTooLargeException:数据包大小51917416字节

获取捕获图像的URI后,您可以使用URI而不是位图共享

public void share(Uri uri) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("image/*");
shareIntent.setPackage("com.whatsapp");
if (SDK_INT < 30)
shareIntent.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(activity, activity.getPackageName() + ".provider", uri);
else
shareIntent.putExtra(Intent.EXTRA_STREAM,uri);
activity.startActivity(Intent.createChooser(shareIntent, "Share to"));
}

最新更新