我的C ++ / Qt应用程序中有一个QImage,我想将它作为Bytearray存储在Microsoft SQL数据库中。之后,我想用Visual Studio C#Application作为ByteArray将其读出并将其转换为Image对象。简化:
QImage C++-->Bytearray-->Microsoft SQL-->Bytearray-->ImageC#
是否可以使用png-Pictures或者是否有其他解决方案可以使用C ++存储在Microsoft SQL Server中并使用C#读出?
答案 0 :(得分:0)
如果我这样做,我会使用base64作为字符串来存储在数据库中。
经常使用Base64,因为它可以用ASCII字符串表示二进制数据,非常适合存储在数据库中。使用base64的原因是集合中只有64个字符,它们都是可打印的字符(没有有趣的奇怪符号)
我会这样做:
第1步
首先将您的QImage转换为base64字符串
QImage image;
image.load("test.png");
QByteArray byteArray;
QBuffer buffer(&byteArray);
image.save(&buffer, "PNG"); // writes the image in PNG format inside the buffer
QString base64Str = QString::fromLatin1(byteArray.toBase64().data())
第2步
将此字符串保存在数据库中
第3步
在C#land中,从数据库加载base64字符串,然后将其转换为Image
public Image Base64ToImage(string base64String)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
ms.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(ms, true);
return image;
}
注意:上面的代码尚未经过测试!