- PR -

object型からImage型への変換

1
投稿者投稿内容
ぶん
会議室デビュー日: 2004/10/15
投稿数: 4
投稿日時: 2004-10-15 13:40
【環境】
C#.NET 2003
Win2000
Access2000

AccessテーブルのOLE オブジェクト型フィールドに埋め込まれたJpgファイルをImage型の変数(またはImageList)に代入する方法がわかりません。
ImageConverterクラスのConvertFromメソッドを使用して変換を行おうと思っていますが、
ConvertFromの引数の指定がどうしても分かりません。
どなたかご教授願います。また他の方法で出来るのであればそちらもご教授願います。

下記のようなコードで行っています。
private void ImageConvert()
{
System.Drawing.Image im;
string SQL = "select PARTS_PIC from PARTS where PARTS_CODE='hogehoge'";
rdrSQL(SQL);
while (rdr.Read())
{
ImageConverter ic = new ImageConverter();
im = (Image)ic.ConvertFrom([ITypeDescriptorContext],[CultureInfo],rdr[0]);←ここの引数の指定が分かりません

(処理...)

}
rdr.Close();
}

public void rdrSQL(string SQL)
{
OleDbCommand cmd = new OleDbCommand();
cmd = conn.CreateCommand();
cmd.CommandText = SQL;
cmd.Transaction = trn;
rdr = cmd.ExecuteReader();
}

todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-10-15 14:03
googleで検索して一発ですが..

[HOWTO] Visual C# でデータベースから PictureBox コントロールに画像を直接コピーする方法
http://support.microsoft.com/default.aspx?scid=kb;ja;317701

にDataAdapterを使った方法があります。

また、

引用:

[HOW TO] Visual C# .NET で ADO.NET を使用した BLOB データの読み取りと書き込みの方法
http://support.microsoft.com/default.aspx?scid=kb;ja;309158

GetChunk メソッドと AppendChunk メソッドは、ADO.NET の DataReader 列、DataSet 列、または Command パラメータでは利用できません。



ので、ExecuteReaderでOLEオブジェクト列を扱えません。

[ メッセージ編集済み 編集者: todo 編集日時 2004-10-15 14:40 ]
ぶん
会議室デビュー日: 2004/10/15
投稿数: 4
投稿日時: 2004-10-15 15:56
ありがとうございました、なんとか解決致しました。
ただしテーブルにJpgファイルを直接入力(Accessテーブルの表示は「Microsoft Photo Editor 3.0 イメージ」になる)している場合は
pictureBox1.Image = Image.FromStream(stmBLOBData);時に
以下のエラーメッセージが表示されました

「使用されたパラメータが無効です。」
http://support.microsoft.com/default.aspx?scid=kb;ja;316652
これはMSのバグのようです。

コード上から登録(Accessテーブルの表示は「ロングバイナリ―」になる)しコード上から表示する場合にはうまく行きました。
1

スキルアップ/キャリアアップ(JOB@IT)