2012-01-23 5 views
1

既存のAccess 2010データベースから整数、文字列および浮動小数点データを抽出するにはANSI Cコンパイラ(LabWindows/CVIバージョン2010)を使用しています。しかし、長いバイナリデータとして保存されたイメージデータをファイル(.jpg、.tiff)に取り出すことはできませんでした。テクニックが分かれば、これは難しい作業ではないと私は思っています。これを行うためのコードやテクニックの経験はありません。どんな助けもありがとう。ANSI Cを使用してデータベースからバイナリイメージデータを.jpgファイルに抽出する

+0

何を抽出しますか?つまり、数字のグラフィック表現をJPGファイルに保存したいのですか? –

+0

どのデータアクセスライブラリを使用していますか? –

+0

'jpeg'や' tiff'ライブラリがなければ、これは簡単なことではありません。 libjepgを見てください。 – Dave

答えて

1

イメージ列内のすべてのデータを正常に取得する場合は、fwrite()を使用してファイルに書き込む必要があります。

長いデータをカラムから取り出すための通常のアクセスパターンは、一度に1つのチャンクを取得する関数を使用することです。これはODBC関数SQLGetDataがどのように動作するかを示しています。固定長のバッファと長さを渡し、その戻り値はデータが切り捨てられたことを示します。そのため、データをファイルに書き込んだ後、成功コードを返すまで再度呼び出します。ナショナルインスツルメンツのLabWindows/CVI SQLツールキット、DBGetColBinaryBuffer()関数が結果を保持するために渡されたバッファが結果を保持するのに十分な大きさではありません」と記載されているコード-1、DB_TRUNCATIONを返すことができるのドキュメントを見てみると

部分的な結果がバッファに返されました。 "

私はDBGetColBinaryBuffer()がループで使用されるように設計されており、そうして部分的な結果をファイルに書き込むと、有効な画像になります。

+0

Martin Broadhurst、DBGetColBinaryBuffer()はトリックを行うように見えます。私はこのプロジェクトに戻り、結果を知らせるとすぐにそれを試してみます。ありがとう! – ryyker

+0

BLOBが暗号化されたファイルであることを実感してから、最終的にはどのように読むかを考えましたが、最終ステップであなたの提案は正しかったです。 – ryyker

関連する問題