私のDBにはbyte[]
さまざまな画像のデータが保持されてpng
おり、bmp
拡張機能は正常に機能しますが、奇妙なことに、jpeg
拡張機能のある画像は反時計回りに90度回転しているようです。これはエンコーダーとデコーダーの問題だとしか思えません。これらjpegs
は iPhone によってエンコードされ、次のコードを使用して Silverlight アプリでデコードされます。
using (MemoryStream ms = new MemoryStream(bImage, 0, bImage.Length))
{
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(ms);
img.Source = bitmapImage;
tempList.Add(img);
}
私は以下bmps
を使用します:
ExtendedImage image = new ExtendedImage();
var bmp = new BmpDecoder();
var png = new PngEncoder();
try
{
bmp.Decode(image, new MemoryStream(bImage));
}
catch (NotSupportedException)
{
new MessageWindow("Incorrect image format", DisplayStrings.ErrorDisplay, MessageButtons.OK, MessageImage.Error).Show();
continue;
}
MemoryStream ms = new MemoryStream();
png.Encode(image, ms);
BitmapImage bi = new BitmapImage();
bi.SetSource(new MemoryStream(ms.ToArray()));
img.Source = bi;
tempList.Add(img);
どちらのオプションも、イメージを正しい向きで表示しません。特定の jpeg デコーダー クラスがありませんか?
編集 結局のところ 、iPhone はバイト配列に対して奇妙なことをしていました。その結果、保存する前に iPhone 上の画像を回転させても、iPhone 上の画像には何も見えませんが、画像の正しい向きがサーバーにアップロードされます。なぜこれが起こるのかは誰の推測でもありますが、そうです。