我在C ++服务器上有一个在sqlite数据库中保存为blob的图像。我从这样的数据库中获取这些图像:
int sizeForThumbnail = sqlite3_column_bytes(sqlStmt, 1);
char* thumbnail = (char * )sqlite3_column_blob(sqlStmt,1);
在此之后,我使用套接字连接将其发送到Android手机:
write(clientDescriptor,thumbnail,sizeForThumbnail);
在Android手机上,我尝试获取如下图像:
InputStream in = socket.getInputStream();
byte[] byteBuffer = new byte[65536];
int countForBytes = in.read(byteBuffer,0,65536);
Bitmap bmp = BitmapFactory.decodeByteArray(byteBuffer, 0, countForBytes);
ImageView photo = (ImageView) findViewById(R.id.imageView);
photo.setImageBitmap(bitmap);
现在我确切地读了我从c ++服务器发送的内容。 countForBytes
与sizeForThumbnail
相同,但decodeByteArray()
返回null。我究竟做错了什么?从数据库中获取图像后,我尝试在文件中编写thumbnail
并将其保存为jpeg
格式,并获取正确的图像,以便从数据库中检索正确。
答案 0 :(得分:0)
我没有获得您尝试使用Java代码的魔力。为什么要将输入数据存储在char
中,然后存储在String
。
直接从InputStream
解码位图怎么样?它会对你有用吗?
Bitmap bmp = BitmapFactory.decodeStream(socket.getInputStream());