将Image数据类型转换为Base64,并将Base64转换为Image数据类型 [英] Convert Image data type into Base64 and Base64 into Image data type
问题描述
我正在使用MS SQL 2012中的数据类型图像"来存储图像.
问题:我在C#中的BASE64字符串中有一个图像
<预> <代码>/9J/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2我正在将其转换为C#中的byte [],因为我需要将其保存到数据类型为IMAGE的列中.像这样:
byte [] imageInByteArray = Convert.FromBase64String("MyImage");
它已成功保存,如下所示:
数据库中的byte []数组数据-
现在,我正在尝试使用以下方法检索图像并将其转换回BASE64:
var imageA = results.Read< byte []>().ToArray();字符串imageB = Convert.ToBase64String(imageA);
现在我得到这样的结果:
<代码> MHhGRkQ4RkZFMTAwNTg0NTc4Njk2NjAwMDA0RDREMDAyQTAwMDAwMDA4MDAwNDg3NjkwMDA0MDAwMDAwMDEwMDAwMDAwMDAzRTAxMTIw
结果不是我期望的那样
<预> <代码>/9J/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2我找到了解决方案,请仔细研究一下,因为当您不想更改数据库中的数据类型Image时,它可能会很有用:
我将base64字符串原样发送到数据库,然后将其转换为varbinary,如下所示:
SELECT CAST(N''AS xml).value('xs:base64Binary(sql:variable("@ Image2"))','varbinary(max)')
并将其插入到图像列中.
然后我像这样在base64中检索图像:
SELECT cast(''as xml).value('xs:base64Binary(sql:column("img"))','varchar(max)')从imageTemp哪里...
它给了我之前发送的确切的Base64字符串.
谢谢.
I'm using Data-Type "Image" in MS SQL 2012 to store Image.
problem: I have an image in BASE64 string in C#
/9j/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2
I am converting it into byte[] in C# as I need to save it into a column of data type IMAGE. Like this:
byte[] imageInByteArray =Convert.FromBase64String("MyImage");
It is saved successfully like this:
The byte[] array data in database -
Now I am trying to retrieve an image and converting it back into BASE64 using this:
var imageA = results.Read<byte[]>().ToArray();
string imageB =Convert.ToBase64String(imageA);
Now I am getting the result like this:
MHhGRkQ4RkZFMTAwNTg0NTc4Njk2NjAwMDA0RDREMDAyQTAwMDAwMDA4MDAwNDg3NjkwMDA0MDAwMDAwMDEwMDAwMDAzRTAxMTIw
The result is not what I was expecting it should be like this
/9j/4AAQSkZJRgABAQEASABIAAD/4SKhRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykAMjAxNjowMjowNSAxNDo1MTo0MwAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFUKADAAQAAAABAAACWAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAACFrAAAAAAAAAEgAAAABAAAASAAAAAH/2
I found the solution for this, Please look into this because it might be useful when you do not want to change your datatype Image in your database:
I sent base64 string as it is to database and there I converted it into varbinary like this:
SELECT CAST(N'' AS xml).value('xs:base64Binary(sql:variable("@Image2"))', 'varbinary(max)')
and inserted it into the image column.
then I retrieved an image in base64 like this:
SELECT cast('' as xml).value('xs:base64Binary(sql:column("img"))', 'varchar(max)') FROM imageTemp WHERE...
It gave me the exact Base64 string which I have sent earlier.
Thank You.
这篇关于将Image数据类型转换为Base64,并将Base64转换为Image数据类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!