[英]Send image from c++ server to Android client
我在我的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
格式,並獲得正確的圖像,以便從數據庫中檢索是正確的。
我沒有得到你試圖用Java代碼做的魔法。 為什么將輸入數據存儲在char
,然后存儲在String
。
如何直接從InputStream
解碼位圖。 它會對你有用嗎?
Bitmap bmp = BitmapFactory.decodeStream(socket.getInputStream());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.