Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C+将wxImage存储到数据库中+;?_C++_Mysql_Wxwidgets_Blobstorage - Fatal编程技术网

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

C++ 如何使用C+将wxImage存储到数据库中+;?,c++,mysql,wxwidgets,blobstorage,C++,Mysql,Wxwidgets,Blobstorage,我有一些wxImages,我想将它们存储到MySQL数据库中的(二进制大对象)字段中 nor中没有方法获取二进制数据作为无符号字符数组,因此我可以加载到数据库中 我目前的解决方法是将图像写入临时文件,然后直接从该文件加载BLOB字段 有没有更有效的方法将wxImage对象加载并存储到MySQL BLOB字段中 我使用MySQL C++连接1.05,MS VisualStudio 2008,和C++ +/p>< P>除非我丢失了一些东西,你不能使用WxMeIs::GETDATA()来获取数据,然后

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

nor中没有方法获取二进制数据作为
无符号字符数组
,因此我可以加载到数据库中

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

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


我使用MySQL C++连接1.05,MS VisualStudio 2008,和C++ +/p>< P>除非我丢失了一些东西,你不能使用WxMeIs::GETDATA()来获取数据,然后::GeTeHe:和::GETFACK知道指针指向的数据的长度吗?WxImage::GetData返回的无符号字符*看起来应该指向组成图像的RGB数据。

wxWidgets不为来自
wxBitmap
的数据提供任何API(因为它依赖于平台),但
WxImage
使用定义良好的(非常简单)使用上面提到的
GetData()
方法可以访问的格式。请注意,如果图像具有alpha通道,则可能还需要使用
GetAlpha()


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

你说得对。这应该行得通。但是,您可能希望压缩数据。一些MySQL BLOB示例说,对数据进行编码,使其处于可打印范围内,以避免任何危险的二进制值。另外,如何从数据创建图像?上次我尝试保存未压缩的图像时,无法从数据创建图像。当我使用临时文件路径时,图像没有问题。API说除非你知道自己在做什么,否则不要使用
SetData
。尽管我不建议这样做,但还是没有理由不这样做,所以我只能说你的代码中肯定有一些bug。不幸的是,如果没有任何额外的信息,就不可能更精确。