モバイルアプリから取り込んだ画像をBitmapImage
に変換する必要があります。撮影したすべての画像はbyte[]
に変換され、SQL Serverに格納されます。byte []をBitmapImageに変換できません
次に、そのイメージを取得し、WPFのImage
コントロールに表示したいとします。
private static BitmapImage LoadImage(byte[] imageData)
{
if (imageData == null || imageData.Length == 0) return null;
var image = new BitmapImage();
using (var mem = new MemoryStream(imageData))
{
mem.Position = 0;
image.BeginInit();
image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = null;
image.StreamSource = mem;
image.EndInit(); //Error exception here.
}
image.Freeze();
return image;
}
上記のように、私はEndInit()
行でエラーが表示されます。ここでは、バイト[]からのBitmapImageに私の変換があります。
この操作を完了するのに適したイメージングコンポーネントは見つかりませんでした。
私はLoadImage()
メソッドを呼び出すと、次のように:、
MyCollection.Add(new ImageItems
{
Id = image.Id,
ImageData = LoadImage(image.TruckImg),
DateTaken = image.DateTaken
});
の事は私がメールにその正確に同じ画像を添付する場合ので、バイトが[]が有効なイメージが含まれていることを知っています画像はGmailに正しく表示されます。
電子メールの添付ファイルのコード:
MemoryStream memoryStream = new MemoryStream(image.TruckImg);
mail.Attachments.Add(new Attachment(memoryStream, filename, MediaTypeNames.Image.Jpeg));
誰がどのように上記の私のエラーを修正する教えてもらえますか? BitmapImageが機能するための特定のヘッダーを設定する必要がありますか?もし私がそうすれば、私は郵送された画像を受け取ったときに正確に同じバイト[がGmailに正しく表示されます...
ありがとうございます! :)
"この操作を完了するのに適したイメージングコンポーネントが見つかりませんでした"は、バイト配列が有効なエンコードされたイメージバッファ、つまりJPEG、PNGなどではないことを明確に示しています。 – Clemens
ありがとうコメント。私は自分と同じバイト[]をメールに添付して送ることができないことを理解しておらず、ブラウザに.jpgイメージとして正しく表示されますか? – CareTaker22
はい、上記の変換コードに追加されています: 'image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;' – CareTaker22