0

我的数据库保存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 上的图像没有任何作用,而是将图像的正确方向上传到服务器上。为什么会发生这种情况是任何人的猜测,但事实就是如此。

4

1 回答 1

0

通过在将字节数组上传到服务器之前在 iPhone 上旋转图像来解决。这会以正确的方向保存图像,并且显然不会与 iPhone 上的原始图像产生明显差异。

于 2013-03-15T11:39:50.753 回答