将图像从c ++服务器发送到Android客户端

时间:2015-03-01 18:44:26

标签: android c++ image

我在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 ++服务器发送的内容。 countForBytessizeForThumbnail相同,但decodeByteArray()返回null。我究竟做错了什么?从数据库中获取图像后,我尝试在文件中编写thumbnail并将其保存为jpeg格式,并获取正确的图像,以便从数据库中检索正确。

1 个答案:

答案 0 :(得分:0)

我没有获得您尝试使用Java代码的魔力。为什么要将输入数据存储在char中,然后存储在String

直接从InputStream解码位图怎么样?它会对你有用吗?

Bitmap bmp = BitmapFactory.decodeStream(socket.getInputStream());