- - PR -
【SQL Server Compact】画像(イメージファイル)の格納方法
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-07-29 18:24
開発環境
C# CF2.0 VA2005 WM6 SQL Server Compact 2005 現在以下の手順で画像(イメージファイル)をDB(sdfファイル)へ格納しています。 格納先のデータ型はimageです。 @Bitmapオブジェクトを作成し指定したフルパスのイメージファイルをインスタンス化する。 System.Drawing.Bitmap imgFile = new Bitmap(フルパス); AMemoryStreamを生成しストリーム上にBitmapインスタンスをJPEGファイルとして保存する。 System.IO.MemoryStream stream = new MemoryStream(); imgFile .Save(stream, ImageFormat.Jpeg); Bストリームの内容をバイト配列に書き込む。 byte[] imageByte = stream.ToArray(); stream.Close(); Cバイト配列データをDB(データ型:image)に格納する。 格納方法としてはこの方法で最善でしょうか? また、イメージファイルをバイト配列データに変換せずに そのままimageデータ型に格納することは可能なのでしょうか? 試したのですがうまくいきませんでした。 これができればソースが簡略化されるのではと思っています。 | ||||||||||||
|
投稿日時: 2008-08-04 08:33
こんにちは。nasです。
少し興味があったので試してみました。 尚、WM6の環境はないので通常のPC上でやってます。
@〜Bの手順は回りくどい事をしています。 直接、イメージファイル(JPEGファイル)の内容をバイト配列に格納で良いと思います。 以下はサンプルです。
それと、提示された方法だとイメージを加工しているので、登録する毎に 元ファイルと違ったデータになります。 こちらで試した結果、DBに格納して取り出すと見た目とファイルサイズは同じですが バイナリ比較すると同一ではありませんでした。
直接イメージファイルを格納する事は出来ないと思います。 また、何故バイト配列にしているのかはMSDNライブラリで SqlDbType列挙体のImageの説明を見ると分ると思います。 | ||||||||||||
|
投稿日時: 2008-08-05 15:49
>nasさん
わざわざ実践していただきありがとうございます。 丁寧な説明のおかげで理解することができました。 不要な手順を取り除くことができ満足です。 Imageデータ型はByte型のArrayだから バイト配列に変換する必要があるのですね。 今後ともアドバイスよろしくお願いいたします。 |
1