Android 通过ImageView.setImageUri()使用原始位图

Android 通过ImageView.setImageUri()使用原始位图,android,bitmap,imageview,android-contentprovider,Android,Bitmap,Imageview,Android Contentprovider,我正在尝试编写一个内容提供程序,以便通过ImageView.setImageUri()调用将图像发送到另一个进程,我要发送的位图位于内存中,并且由于性能原因,我宁愿避免将其保存在磁盘上,甚至避免对其进行编码,因为用PNG编码可能需要2/3秒的时间,而且由于另一端正在对其进行解码,因此没有多大意义 因此,我可以使用PipeHelper正确地发送PNG格式的图像,但我不能“原始”发送它(因此直接从内存将Android位图作为bytearray发送),有任何选项可以这样做吗?我是否传递了错误的mime

我正在尝试编写一个内容提供程序,以便通过ImageView.setImageUri()调用将图像发送到另一个进程,我要发送的位图位于内存中,并且由于性能原因,我宁愿避免将其保存在磁盘上,甚至避免对其进行编码,因为用PNG编码可能需要2/3秒的时间,而且由于另一端正在对其进行解码,因此没有多大意义

因此,我可以使用PipeHelper正确地发送PNG格式的图像,但我不能“原始”发送它(因此直接从内存将Android位图作为bytearray发送),有任何选项可以这样做吗?我是否传递了错误的mime类型?为什么setImageBitmap()可以处理原始位图,而setImageUri()不能


我知道我可以使用包裹位图,但我想克服包裹大小的限制。最后,如果结尾大小不是问题,是否有比PNG更快的编码支持alpha?

“为什么setImageBitmap()可以处理原始位图,而setImageUri()不能”你是什么意思?Uri是Uri,不是位图。。。“原始”是什么意思?当然URI不是位图,但它将解析为提供数据的输出流。我指的是没有编码的位图,未压缩的位图,字节数组。Android位图(问题已更新,谢谢)。所以使用
copyPixelsToBuffer
这就是我正在做的,但是如果我通过提供程序以流的形式将数据提供回ImageView.setImageUri(),它将不会被ImageView显示。问题取决于BitmapFactory.decodeResourceStream(res,value,is,pad,opts),这是在内容解析期间从ImageView调用的,显然,如果我传递为“is”只是已解码位图的字节数组,则位图未正确解码,因此解码对已解码流不起作用。