将QImage转换为C#图像

时间:2015-03-27 07:03:35

标签: c# sql image qt wrapper

我的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#读出?

1 个答案:

答案 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;
}

注意:上面的代码尚未经过测试!