我将Sam Wirch的指南转换为快速指南,对我来说效果很好,尽管最终图像中有些细微的“挤压”我无法解决。
func resizedCroppedImage(image: UIImage, newSize:CGSize) -> UIImage {
var ratio: CGFloat = 0
var delta: CGFloat = 0
var offset = CGPointZero
if image.size.width > image.size.height {
ratio = newSize.width / image.size.width
delta = (ratio * image.size.width) - (ratio * image.size.height)
offset = CGPointMake(delta / 2, 0)
} else {
ratio = newSize.width / image.size.height
delta = (ratio * image.size.height) - (ratio * image.size.width)
offset = CGPointMake(0, delta / 2)
}
let clipRect = CGRectMake(-offset.x, -offset.y, (ratio * image.size.width) + delta, (ratio * image.size.height) + delta)
UIGraphicsBeginImageContextWithOptions(newSize, true, 0.0)
UIRectClip(clipRect)
image.drawInRect(clipRect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
如果有人想要目标C版本,请在他的网站上。
0
从字面上看,我已经在这几天里不敢恭维了,尽管我一直觉得自己是在启示的边缘,但我根本无法实现自己的目标。
我认为,在设计的概念阶段之前,要想从iPhone的相机或照片库中抓取图像,然后使用相当于“ 宽高比填充”选项的功能将图像缩小到指定的高度,这将是一件微不足道的事情。 UIImageView(完全在代码中),然后裁剪掉传递的CGRect中不适合的所有内容。
从相机或库中获取原始图像非常简单。我对其他两个步骤证明多么困难感到震惊。
所附图像显示了我正在尝试实现的目标。有人能好心地握住我的手吗?到目前为止,我发现的每个代码示例似乎都粉碎了图像,将其倒置,看起来像胡扯,划界,否则就无法正常工作。