我设法将Image转换为varbinary并将其存储在我的数据库中.我一直在尝试将varbinary转换为Image,但我在这里遇到了麻烦.
首先,我在我的服务中从我的数据库中获取Binary.
public Binary getAfbeelding(int id)
{
var query = (from p in dc.Afbeeldings
where p.id == id
select p.source).Single();
Binary source = query;
return source;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用StackOverflow上的代码将varbinary转换为图像:
public static string convertToImage(Binary source)
{
byte[] b = source.ToArray();
MemoryStream ms = new MemoryStream(b);
Image img = Image.FromStream(ms);
return img.Source.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我在打电话之前遇到了麻烦new MemoryStream:
'ondernemersAward.EditAfbeeldingServiceReference.Binary'不包含'ToArray'的定义,并且没有扩展方法'ToArray'接受类型'OndernemersAward.EditAfbeeldingServiceReference.Binary'的第一个参数可以找到(你是否缺少using指令或程序集引用?)
出于一些奇怪的原因,我不能使用"普通"二进制文件,它总是会告诉我使用OndernemersAward.EditAfbeeldingServiceReference.Binary哪个是我的ServiceReference,如您所见.
怎么解决这个问题?
1)将对项目的引用添加到System.Data.Linq.dll
2)然后尝试这个:
public static Image ConvertToImage(System.Data.Linq.Binary iBinary)
{
var arrayBinary = iBinary.ToArray();
Image rImage = null;
using (MemoryStream ms = new MemoryStream(arrayBinary))
{
rImage = Image.FromStream(ms);
}
return rImage;
}
Run Code Online (Sandbox Code Playgroud)