我正在从网络读取原始图像。该图像已被图像传感器读取,而不是来自文件。如何从原始图像获取位图
这些是我知道关于图像的东西:
〜高度&宽度
〜总大小(以字节计)
〜8位灰度
〜1字节/象素
我试图将此图像转换为位图以在图像视图中显示。
这里是我的尝试:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = shortHeight; //360
opt.outWidth = shortWidth;//248
imageBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageSize, opt);
decodeByteArray返回空,因为它不能解码我的形象。
我还试图直接从输入流中读取它,而无需首先将其转换为一个字节数组:
imageBitmap = BitmapFactory.decodeStream(imageInputStream, null, opt);
这返回空为好。
我在这&其他论坛搜索,但无法找到一种方法来实现这一点。
任何想法?
编辑:我应该补充说,我做的第一件事是检查流是否实际上包含原始图像。我使用其他应用程序(iPhone/Windows MFC)&,他们能够读取它并正确显示图像。我只需要找出在Java/Android中执行此操作的方法。
@Seva Alekseyev:谢谢你的答案。我尝试了你的建议。我得到一个RuntimeException。根据logcat“缓冲区不够大的像素”。我创建的位图使用宽度&图像的高度 – OceanBlue 2011-04-12 15:25:26
@OceanBlue:消息提示位缓冲区小于4 *宽*高字节长,检查它是否是ARGB_888是每像素4字节格式 – 2011-04-12 15:29:32
@Seva Alekseyev:我知道确保位缓冲区是宽度*高度字节长,图像是每个像素格式1个字节,所以即使我创建了4倍大小的字节数组,图像也会存储在它的前1/4部分。在Android中碰巧知道任何“1字节/像素”格式? – OceanBlue 2011-04-12 21:28:38