c++ - 如何使用 C++ 将 wxImage 存储到数据库中?

标签 c++ mysql wxwidgets blobstorage

我有一些 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/

相关文章:

c++ - 当我尝试使用 tbb 并行我的程序时出现段错误

C++ static_cast 与 dynamic_cast

python - 测试只读表时表不存在(Django)

mysql float 据字段不接受每个 float

Mysql 从加载文件中的另一个表中选择

c++ - 嵌入 wxWidgets 的简单 Lua 解释器

c++ - Fourcc 与 mac os X

c++ - 在哪里寻找(对于 c++ 初学者)为 Windows Vista x64 Ultimate 创建挂起进程程序?

c++ - 包括 guard 不工作

c++ - 使用 wxHTTP Post 请求上传 wxImage