0

WPF Image画像ダイアログからのソース割り当てがあります。

this.imgProduct.Source = new BitmapImage(new Uri(op.FileName)); 

byte arrayソースを取得し、変換して保存するにはどうすればよいdatabaseですか?

ありがとうございました

4

2 に答える 2

0

画像ファイルにアクセスできる限りop.FileName、ファイルの内容を取得するのは非常に簡単です。

byte[] imageBuffer = File.ReadAllBytes(op.FileName);

画像がファイル Uri から読み込まれる場合 (例のように)、次のようにすることもできます。

byte[] imageBuffer = File.ReadAllBytes(image.UriSource.AbsolutePath);

ロード元のファイルに関する情報がない BitmapImage しかない場合 (たとえば、一時ファイルまたは Web リソースからロードされた場合)、WPF のBitmapEncodersのいずれかでエンコードする必要があります。

byte[] imageBuffer;
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));

using (MemoryStream stream = new MemoryStream())
{
    encoder.Save(stream);
    imageBuffer = stream.GetBuffer();
}
于 2012-10-17T07:14:13.527 に答える
0

BitmapImage を byte[] に変換してからデータベースに保存する必要があります。

var imageSource = this.imgProduct.Source as BitmapImage;
var stream = imageSource.StreamSource;
Byte[] buffer = null;

if (stream != null && stream.Length > 0)
{
    using (BinaryReader br = new BinaryReader(stream))
    {
        buffer = br.ReadBytes((Int32)stream.Length);
    }
}

// write buffer to the database

PSコードをテストしていませんが、うまくいくと思います!

于 2012-10-17T04:21:01.177 に答える