我有一个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();
}
}
任何帮助,提前致谢。
答案 0 :(得分:2)
Magick.NET,.Net Core的ImageMagick包装器可用于许多文件操作,请参阅https://github.com/dlemstra/Magick.NET
答案 1 :(得分:1)
在我的项目中,我需要裁剪并调整用户上传的图片大小。我正在使用一个名为ImageSharp from Six Labors的神奇图书馆。您可以使用其图像处理器进行转换,例如调整大小,裁剪,倾斜,旋转等等!
我实际上正在通过MyGet使用他们的夜间构建。
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库的忠实粉丝!