昨日から、私はバイト配列からイメージをロードしようとしています。 私はNorthWind databaseのEmployeesテーブルからバイト配列を取得します。 articlesには、サイズ78のOLEヘッダーがあり、バイト[]からImageSourceに変換する前に削除する必要があることが記載されています。しかし、それはどんなイメージも得られない。ここ は私のコンバータです。ここNorthwindデータベースのEmployeesテーブルから画像をロード
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
byte[] data = value as byte[];
if (data != null)
{
MemoryStream ms = new MemoryStream();
int offset = 78;
BitmapImage img = new BitmapImage();
ms.Write(data, offset, data.Length - offset);
img.SetSource(ms);
ms.Close();
return img;
}
return null;
}
はXAML
<Image Grid.Column="1" Height="147" HorizontalAlignment="Left" Margin="3,3,0,6" Name="photoImage" Source="{Binding Path=Photo, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource PhotoConverter1}}" Stretch="Fill" VerticalAlignment="Center" Width="137" DataContext="{Binding}" />
の私のイメージ定義は、あなたがそれを動作させる方法を見つけ出すために私を助けてもらえますか?
をヘッダは常にBMまたはASCIIで始まり「424D」また、データのビッグまたはリトルエンディアンフォーマットに応じて、「4D42」であってもよいです。 – Alikar
あなたの答えに感謝します。私はあなたのリンクに行って、与えられたコードを使用しましたが、画像はまだロードされません(画像は画像コントロールに表示されません).2番目のリンクのコードはオフセットが78であることを確認します。 – Shomron
ビットマップあなたの質問へのヘッダー。おそらく、それは正しくフォーマットされていません。 – Alikar