.Net Core中的字节图像旋转

时间:2018-04-26 06:04:20

标签: asp.net-web-api asp.net-core-2.0

我有一个IFormFile图像文件(来自postman作为表单数据),我将其转换为字节数组。在将其转换为字节数组之前,我想将其旋转到实际位置(如果用户输入图像为90°(右)。我正在asp.net core 2.0中实现web api。

byte[] ImageBytes = Utils.ConvertFileToByteArray(model.Image);


public static byte[] ConvertFileToByteArray(IFormFile file)
{
    using (var memoryStream = new MemoryStream())
    {
        file.CopyTo(memoryStream);
        return memoryStream.ToArray();
    }
}

任何帮助,提前致谢。

2 个答案:

答案 0 :(得分:2)

Magick.NET,.Net Core的ImageMagick包装器可用于许多文件操作,请参阅https://github.com/dlemstra/Magick.NET

答案 1 :(得分:1)

在我的项目中,我需要裁剪并调整用户上传的图片大小。我正在使用一个名为ImageSharp from Six Labors的神奇图书馆。您可以使用其图像处理器进行转换,例如调整大小,裁剪,倾斜,旋转等等!

通过NuGet安装

我实际上正在通过MyGet使用他们的夜间构建。

  1. Visual Studio - >工具 - >选项 - > NuGet包管理器 - >包来源
  2. 点击" Plus"按钮添加新的包资源
  3. 我输入" ImageSharp Nightly"作为名称并放置" https://www.myget.org/F/sixlabors/api/v3/index.json"作为源网址。
  4. 在浏览,搜索" SixLabors.ImageSharp" (在我的情况下,我还需要" SixLabors.ImageSharp.Drawing"但在您的情况下,您可能只需要核心库。请始终参考他们的文档。)
  5. 裁剪&调整大小

    using SixLabors.ImageSharp;
    using SixLabors.ImageSharp.Formats;
    using SixLabors.ImageSharp.Processing;
    using SixLabors.ImageSharp.Processing.Transforms;
    using SixLabors.Primitives;
    using System.IO;
    
    namespace DL.SO.Project.Services.ImageProcessing.ImageSharp
    {
        public CropAndResizeResult CropAndResize(byte[] originalImage, 
            int offsetX, int offsetY, int croppedWidth, int croppedHeight, 
            int finalWidth, int finalHeight) : IImageProcessingService
        {
            IImageFormat format;
            using (var image = Image.Load(originalImage, out format))
            {
                image.Mutate(x => x
    
                    // There is .Rotate() you can call for your case
    
                    .Crop(new Rectangle(offsetX, offsetY, croppedWidth, croppedHeight))
                    .Resize(finalWidth, finalHeight));
    
                using (var output = new MemoryStream())
                {
                    image.Save(output, format);
    
                    // This is just my custom class. But see you can easily
                    // get the processed image byte[] using the ToArray() method.
    
                    return new CropAndResizeResult
                    {
                        ImageExtension = format.Name,
                        CroppedImage = output.ToArray()
                    };
                }
            }
        }
    }
    

    希望这对你有所帮助 - 来自ImageSharp库的忠实粉丝!