代码之家  ›  专栏  ›  技术社区  ›  Thomas Matthews

如何用C++存储WXMIX到数据库中?

  •  0
  • Thomas Matthews  · 技术社区  · 14 年前

    我有一些东西,我想把它们存到 BLOB mysql数据库中的(二进制大对象)字段。

    中没有方法 wxImage 也不 wxBitmap 以数组形式获取二进制数据 unsigned char 所以我可以加载到数据库中。

    我目前的解决方法是将图像写入一个临时文件,然后直接从该文件加载blob字段。

    是否有更有效的方法将wximage对象加载并存储到mysql blob字段中?

    我使用MySQL C++连接器1.05,MS Visual Studio 2008, wxWidgets 和C++。

    2 回复  |  直到 14 年前
        1
  •  1
  •   VZ.    14 年前

    wxwidgets不向来自的数据提供任何API wxBitmap (因为它依赖于平台)但是 wxImage 使用定义良好(非常简单)的格式,您可以使用 GetData() 方法如上所述。请注意,您可能需要使用 GetAlpha() 如果你的图像有阿尔法通道。

    但是,我不会这样做,因为数据 巨大的 如果你这样做的话。当压缩它时,正如上面所建议的,是可能的,当 WXIMAGE 已经支持以任何标准图像格式写入图像。创建一个 wxMemoryOutputStream 并把它传递给 SaveFile() . 然后直接使用 GetOutputStreamBuffer()->GetBufferStart() 以及相关功能。

        2
  •  1
  •   Eric Perko    14 年前

    除非我找不到东西,否则你不能用wximage::getdata吗?( http://docs.wxwidgets.org/2.8/wx_wximage.html#wximagegetdata )要获取数据,然后::getheight和::getwidth要知道指针指向的数据的长度吗?wximage::getdata返回的无符号char*似乎应该指向构成图像的rgb数据。