2011-06-23 59 views
0

我试图点击一个Web服务来检索与请求发送的ID有关的图像。 Web服务返回一个jpeg。从HttpResponse获取图像

我有几个问题:

我想这个存储JPEG在我的应用程序的数据库sqlite3的。我应该使用哪种列类型?一个blob?

我应该读取哪些数据类型以将其存储在列中?

最后,我该如何从这个列中获取数据并将其放入ImageView?

回答

0

根据图像的大小,您可能希望将其存储在SDCard上(例如,Android使用图像拍摄的图像...),并仅存储数据库中的Uri图像。小图像可以将字节存储在数据库中。

这就是我所做的,它运作良好。

若要从字节的图像,你可以使用

Bitmap theImageFromByteArray = BitmapFactory.decodeByteArray(imageByteArray, 0, imageByteArray.length); 

imageView.setImageBitmap(theImageFromByteArray); 
+0

是否使用位图此事,如果图像是通过Web服务发送的是JPEG?另外,由于我设置web服务对象的方式,返回的jpeg正在读入一个String,我正在调用getBytes()。这很好吗?我得到图像,读取String,调用getBytes(),创建Bitmap,然后用Bitmap调用setImageBitmap,但在ImageView中没有任何显示。 – Andrew

+0

JPEG的罚款。 Android本身支持这些以及PNG。当你说“将它读入字符串”时,你能澄清一下吗?如果这是一个图像的字节的情况下,而不是结束了一个字节[]你有一个字符串...但这些单个字节的“值”是相同的,那么你应该没问题。因为,当你使用该字符串时,你应该能够调用imageFromString.getBytes(),并且字节[]将等于服务器上图像的原始字节。如果情况并非如此,请解释。 – BonanzaDriver

+0

情况就是这样,但ImageView不会填充图像。我只是从我的Web服务函数中返回EntityUtils.toString(mResponse.getEntity()),并从中调用getBytes()来创建Bitmap对象。 – Andrew