Sometimes the image provided by the UIImagePicker is not the right size, and putting it to the UIImageView is not enough as we do need to know the size it was being fit to.
Let’s cut the chase, here is the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
public static class UIImageUtils { /// /// /// /// /// A /// public static UIImage ScaleToFit(UIImage sourceImage, System.Drawing.SizeF targetSize) { UIImage newImage; SizeF imageSize = sourceImage.Size; float width = imageSize.Width; float height = imageSize.Height; float targetWidth = targetSize.Width; float targetHeight = targetSize.Height; float scaleFactor = 0f; float scaledWidth = targetWidth; float scaledHeight = targetHeight; PointF thumbnailPoint = new PointF(0, 0); if (imageSize != targetSize) { float widthFactor = targetWidth / width; float heightFactor = targetHeight / height; if (widthFactor < heightFactor) scaleFactor = widthFactor; else scaleFactor = heightFactor; scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; // center the image if (widthFactor < heightFactor) { thumbnailPoint.Y = (targetHeight - scaledHeight) * 0.5f; } else if (widthFactor > heightFactor) { thumbnailPoint.X = (targetWidth - scaledWidth) * 0.5f; } } RectangleF thumbnailRect = new RectangleF(new PointF(0, 0), new SizeF(scaledWidth, scaledHeight)); UIGraphics.BeginImageContext(thumbnailRect.Size); sourceImage.Draw(thumbnailRect); newImage = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); return newImage; } }
|
Hope this helps.
Happy coding!