I'm trying to rotate an image using ImageSharp.
This is my .NET Core API code:
public async Task<IActionResult> Rotate([FromBody] PhotoRotateViewModel model)
{
var photo = await _photoRepository.Get(model.PhotoId);
if (photo != null)
{
byte[] imageBytes;
HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(photo.imageUrl);
WebResponse imageResponse = imageRequest.GetResponse();
Stream responseStream = imageResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{
imageBytes = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
imageResponse.Close();
var rotatedImage = RotateImage(imageBytes);
}
return Ok();
}
private byte[] RotateImage(byte[] imageInBytes)
{
using (var image = Image.Load(imageInBytes, out var imageFormat))
{
image.Mutate(x => x.Rotate(90));
return ImageToByteArray(image, imageFormat);
}
}
private byte[] ImageToByteArray(Image<Rgba32> image, IImageFormat imageFormat)
{
using (var ms = new MemoryStream())
{
image.Save(ms, imageFormat);
return ms.ToArray();
}
}
It looks like the new image gets cut off.
I've attached my original image, and the result that I get
Original:
Rotated:
This appears to be happening to all the images I've tried