Android 将字节数组转换为位图
我将Android BluetoothChat示例项目更改为通过蓝牙传输文件。我成功地传输了文本文件,并将它们打印到ListActivity上。我想对图像做同样的事情,但无法让它工作。有一个Handler对象,它将在InputStream接收的字节数组发送到UserInterface。我需要把这个bytearray转换成一个图像。我尝试了以下方法,但无效:Android 将字节数组转换为位图,android,bytearray,inputstream,image,bitmapfactory,Android,Bytearray,Inputstream,Image,Bitmapfactory,我将Android BluetoothChat示例项目更改为通过蓝牙传输文件。我成功地传输了文本文件,并将它们打印到ListActivity上。我想对图像做同样的事情,但无法让它工作。有一个Handler对象,它将在InputStream接收的字节数组发送到UserInterface。我需要把这个bytearray转换成一个图像。我尝试了以下方法,但无效: @Override public void handleMessage(Message msg) { swi
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_STATE_CHANGE:
if(D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
switch (msg.arg1) {
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
myImg.setImageBitmap(BitmapFactory.decodeByteArray(readBuf, 0, readBuf.length));
//the following lines would actually display the text of the file in the ListActivity
//String readMessage = new String(readBuf, 0, msg.arg1);
//mConversationArrayAdapter.add(mConnectedDeviceName+": " + readMessage);
break;
}
}
};
将消息发送到UI的处理程序代码如下所示:
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1,buffer).sendToTarget();
回答
我读了很多其他的帖子,我发现其他人成功地使它工作。他用了一个小把戏救了我。我不会在这里给出答案,因为在问题页面中有更好的解释
感谢大家的帮助。尝试使用
位图工厂。decodeByteArray(byte[]数据,int offset,int length)
方法从字节数组获取位图。myImg引用了我在UI上使用的图像。在我点击send后,图像消失了。我想没有正确的位图可以替换。有错误或异常吗?你确定这是图像吗?您是否尝试将其保存在某个位置并使用常规图像查看器打开?这是我在日志文件中得到的。在我在另一台设备中点击“发送图像”20次之后。tag skia---skipagedecoder::Factory返回null。我读了很多关于我面临的问题的帖子,可能是我在将输入流发送到UI之前没有在字节数组中读取整个输入流。希望我能带着一个解决方案回来。