我有一些 wxImages,我想将它们存储到 BLOB 中MySQL 数据库中的(二进制大对象)字段。
wxImage 中没有方法也不wxBitmap用于获取二进制数据作为 unsigned char
数组,以便我可以加载到数据库中。
我目前的解决方法是将图像写入一个临时文件,然后直接从该文件加载 BLOB 字段。
是否有更有效的方法来将 wxImage 对象加载和存储到 MySQL BLOB 字段中?
我正在使用 MySql C++ 连接器 1.05,MS Visual Studio 2008,wxWidgets和 C++。
最佳答案
wxWidgets 不为来自 wxBitmap
的数据提供任何 API(因为它是平台相关的)但是 wxImage
使用定义明确(并且非常简单)的格式您可以使用上面提到的 GetData()
方法进行访问。请注意,如果您的图像具有 Alpha channel ,您可能还需要使用 GetAlpha()
。
但是我不会这样做,因为如果您这样做,数据将巨大。虽然压缩它,正如上面所建议的那样,是可能的,但当 wxImage
已经支持以任何标准图像格式写入图像时,为什么还要手动进行压缩呢。只需创建一个 wxMemoryOutputStream
并将其传递给 SaveFile()
。然后使用 GetOutputStreamBuffer()->GetBufferStart()
和相关函数直接访问流缓冲区。
关于c++ - 如何使用 C++ 将 wxImage 存储到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2548130/