I\'m trying to resize an image loaded from disk - a JPG or PNG (I don\'t know the format when I load it) - and then save it back to disk.
I\'ve got the fol
public static UIImage EditPhoto(int iMode, UIImage origImg)
{
SizeF newSize;
if (iMode == 1 || iMode == 2)
newSize = new SizeF(origImg.Size.Height, origImg.Size.Width);
else
newSize = origImg.Size;
UIGraphics.BeginImageContext(newSize);
CGContext ctx = UIGraphics.GetCurrentContext();
switch (iMode)
{
case 1: // Rotate counter-clockwise 90 degrees
ctx.TranslateCTM(origImg.Size.Height, origImg.Size.Width);
ctx.ScaleCTM(1f, -1f);
ctx.RotateCTM(1.57079633f); // angle is in radians
break;
case 2: // Rotate clockwise 90 degrees
ctx.ScaleCTM(1f, -1f);
ctx.RotateCTM(-1.57079633f); // angle is in radians
break;
case 3: // Flip vertical
// Do nothing. The image comes out flipped vertically because Core Graphics / OpenTK uses cartesian coordinates
break;
case 4: // Flip horizontal
ctx.TranslateCTM(newSize.Width, newSize.Height);
ctx.ScaleCTM(-1f, -1f);
break;
default: // Return unchanged image
ctx.TranslateCTM(0, origImg.Size.Height);
ctx.ScaleCTM(1f, -1f);
break;
}
ctx.DrawImage(new RectangleF(0, 0, origImg.Size.Width, origImg.Size.Height), origImg.CGImage);
UIImage resImg = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return resImg;
}