我有一些wxImages,我想将它们存储到MySQL数据库的BLOB(二进制大对象)字段中。

wxImagewxBitmap中都没有方法来获取二进制数据作为unsigned char数组,因此我可以将其加载到数据库中。

我当前的解决方法是将映像写入临时文件,然后直接从文件加载BLOB字段。

有没有更有效的方法将wxImage对象加载并存储到MySQL BLOB字段中?

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

最佳答案

wxWidgets不会为wxBitmap中的数据提供任何API(因为它是平台相关的),但是wxImage使用定义明确(且非常简单)的格式,您可以使用上述的GetData()方法访问该格式。请注意,如果图像具有Alpha通道,则可能还需要使用GetAlpha()

但是,这不是我要这样做的方式,因为如果您这样做,数据将非常庞大。如上所述,虽然可以压缩,但在wxImage已经支持以任何标准图像格式写入图像时,为什么还要手动进行压缩。只需创建一个wxMemoryOutputStream并将其传递给SaveFile()。然后,直接使用GetOutputStreamBuffer()->GetBufferStart()和相关函数直接访问流缓冲区。

关于c++ - 如何使用C++将wxImage存储到数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2548130/

10-09 13:35