0

いくつかの wxImages があり、それらを MySQL データベースのBLOB (Binary Large OBject) フィールドに 保存したいと考えています。

wxImageにもwxBitmapにも、バイナリ データを配列として取得するためのメソッドがないunsigned charため、データベースにロードできます。

私の現在の回避策は、イメージを一時ファイルに書き込み、ファイルから BLOB フィールドを直接ロードすることです。

wxImage オブジェクトをロードして MySQL BLOB フィールドに保存するためのより効率的な方法はありますか?

MySql C++ コネクタ 1.05、MS Visual Studio 2008、wxWidgets、および C++ を使用しています。

4

2 に答える 2

1

wxBitmapwxWidgetsは(プラットフォームに依存するため)からのデータにAPIを提供しませんが、上記の方法をwxImage使用してアクセスできる明確に定義された(そして非常に単純な)形式を使用します。画像にアルファチャネルがある場合は、同様GetData()に使用する必要があることに注意してください。GetAlpha()

ただし、このようにするとデータが膨大になるため、これは私が行う方法ではありません。wxImage上記でも提案されているように、圧縮することは可能ですが、標準の画像形式のいずれかで画像を書き込むことがすでにサポートされているのに、なぜ手動で圧縮するのかわからないのです。を作成してwxMemoryOutputStreamに渡しSaveFile()ます。GetOutputStreamBuffer()->GetBufferStart()次に、および関連する関数を使用して、ストリームバッファに直接アクセスします。

于 2010-03-30T22:50:18.140 に答える
1

何か不足していない限り、WxImage::GetData ( http://docs.wxwidgets.org/2.8/wx_wximage.html#wximagegetdata ) を使用してデータを取得し、::GetHeight と ::GetWidth を使用して知ることはできませんか?ポインタが指すデータの長さ? WxImage::GetData によって返される unsigned char * は、画像を構成する RGB データを指しているように見えます。

于 2010-03-30T19:48:13.460 に答える