如何将可绘制位读取为输入流
有一些 ImageView
对象。我想读取这个对象的位/原始数据作为输入流。怎么做呢?
There's say some ImageView
object. I want to read bits/raw data of this object as InputStream. How to do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先获取
ImageView
的背景图像作为Drawable
的对象:将
Drawable
图像转换为Bitmap
然后使用Now use
ByteArrayOutputStream
将Bitmap
获取到Stream
并获取bytearray[]
;然后将
bytearray
转换为ByteArrayInputStream
。您可以使用以下代码从
ImageView
获取InputStream
。完整源代码
谢谢
迪帕克
First get background image of the
ImageView
as an object ofDrawable
:Then convert
Drawable
image intoBitmap
usingNow use
ByteArrayOutputStream
to get theBitmap
into aStream
and getbytearray[]
; thenconvert the
bytearray
into aByteArrayInputStream
.You can use the following code to get
InputStream
fromImageView
.Full Source code
Thanks
Deepak
下面的这些方法非常有用,因为它们适用于任何类型的 Drawable(不仅仅是 BitmapDrawable)。如果您想按照 David Caunt 的建议使用绘图缓存,请考虑使用
bitmapToInputStream
而不是bitmap.compress
,因为它应该更快。These methods below are useful because they work with any kind of Drawable (not only BitmapDrawable). If you want to use drawing cache as in David Caunt's suggestion, consider using
bitmapToInputStream
instead ofbitmap.compress
, because it should be faster.您可以使用绘图缓存来检索任何 View 类的位图表示形式。
然后您可以将位图写入 OutputStream,例如:
在您的情况下,我认为您可以使用 ByteArrayOutputStream 获取一个字节[],您可以从中创建一个输入流。代码会是这样的:
You can use the drawing cache to retrieve a Bitmap representation of any View class.
Then you can write the bitmap to an OutputStream, for example:
In your case I think you can use a ByteArrayOutputStream to get a byte[] from which you can create an InputStream. The code would be something like this:
您可能正在寻找这个:
openRawResource
You might be looking for this:
openRawResource