You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整图片尺寸时图片旋转:如何保留原图方向?

问题

我正在上传经WPF应用编辑的JPG图片,为节省存储空间需将图片调整至最大宽度。当前代码可缩小大尺寸图片,但会将所有图片旋转为横向;部分原本已是横向的图片甚至会被旋转180度。

当前代码如下:

public void PrepareImageToUpload(string fileLocation)
{
    BitmapImage myBitmapImage = new BitmapImage();
    myBitmapImage.BeginInit();
    myBitmapImage.UriSource = new Uri(fileLocation);
    myBitmapImage.CacheOption = BitmapCacheOption.None;
    myBitmapImage.DecodePixelWidth = 2000;
    myBitmapImage.EndInit();

    byte[] data;
    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(myBitmapImage));
    using (MemoryStream ms = new MemoryStream())
    {
        encoder.Save(ms);
        data = ms.ToArray();
    }

    string filename = Path.GetFileName(fileLocation);
    string body = Convert.ToBase64String(data);
    string mimeType = "image/jpeg";

    MyFileUploader(fileName, body, mimeType);
}

请问应如何修改代码,才能在调整图片尺寸的同时保留原图方向?

解决方法

原WPF自带的BitmapImage和JpegBitmapEncoder处理图片时,会忽略JPG的EXIF方向信息,导致图片旋转异常。改用ImageSharp库可以正确读取并保留图片的EXIF方向,同时完成尺寸调整。

使用ImageSharp的示例代码如下:

using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.Processing;

public void PrepareImageToUpload(string fileLocation)
{
    byte[] data;
    using (var image = Image.Load(fileLocation))
    {
        // ImageSharp默认会自动应用EXIF方向,无需额外处理
        // 调整图片宽度至最大2000,高度按比例自适应
        image.Mutate(x => x.Resize(new ResizeOptions
        {
            Size = new Size(2000, 0),
            Mode = ResizeMode.Max
        }));

        using (var ms = new MemoryStream())
        {
            // 可根据需求调整JPG质量参数
            image.Save(ms, new JpegEncoder { Quality = 80 });
            data = ms.ToArray();
        }
    }

    string filename = Path.GetFileName(fileLocation);
    string body = Convert.ToBase64String(data);
    string mimeType = "image/jpeg";

    MyFileUploader(filename, body, mimeType);
}

使用前需通过NuGet安装ImageSharp包:Install-Package SixLabors.ImageSharp


内容的提问来源于stack exchange,提问作者intrixius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:05:24