【问题标题】:How to return an image stored in a database using a VB.NET WebAPI如何使用 VB.NET WebAPI 返回存储在数据库中的图像
【发布时间】:2013-11-05 20:20:50
【问题描述】:
我正在使用 SQL Server 和 VB.NET WebAPI。我目前正在使用 javascript 序列化程序返回数据,以在 android 应用程序正在使用的 API 中返回 JSON。我想在数据中包含存储在数据库中的图像。我已经编写了所有数据库内容,它正在返回数据我只是不知道如何将图像作为数据的一部分包含在 API 中。
【问题讨论】:
标签:
vb.net
asp.net-web-api
javascriptserializer
【解决方案1】:
我通常不会将图像存储在我的数据库中,而是将图像放在某个 Web 服务器上,并存储这些图像的链接。在这种情况下,您所要做的就是在您返回的 json 对象中提供图像的 url。
但是,如果您确实想要存储图像,您所做的是对图像(或基本上任何其他资源,例如 pdf 文件、Word 文档等)进行 base64 编码
以下代码取自here:
从图片创建base64字符串:
Public Shared Function ImageToBase64String(ByVal image As Image, _
ByVal imageFormat As ImageFormat)
Using memStream As New MemoryStream
image.Save(memStream, imageFormat)
Dim result As String = Convert.ToBase64String(memStream.ToArray())
memStream.Close()
Return result
End Using
End Function
Visa Versa
Public Shared Function ImageFromBase64String(ByVal base64 As String)
Using memStream As New MemoryStream(Convert.FromBase64String(base64))
Dim result As Image = Image.FromStream(memStream)
memStream.Close()
Return result
End Using
End Function
由于结果是一个普通字符串(尽管是一个很长的字符串),您可以将其作为字符串添加到您的 json 对象中,然后在客户端再次对其进行解码 :)
(几乎)每种语言都有一些来自 base64 库的编码和解码。