是的。首先,你需要得到一个新的尺寸保持纵横比不变:
CGFloat horizontalRatio = newSize.width/oldSize.width;
CGFloat verticalRatio = newSize.height/oldSize.height;
CGFloat ratio = MAX(horizontalRatio, verticalRatio);
CGSize newSize = CGSizeMake(oldSize.width *ratio, newSize.height*ratio)
然后,你需要重绘新的大小图像(自我是你的形象):
UIGraphicsBeginImageContextWithOptions(newSize, YES, 0);
[self drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
然后裁剪至所需尺寸:
CGRect cropRect = CGRectMake ((newImage.size.width - width)/2, (newImage.size.height - height)/2, width, height)
UIGraphicsBeginImageContextWithOptions(cropRect.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect drawRect = CGRectMake(-cropRect.origin.x, -cropRect.origin.y, self.size.width, self.size.height);
CGContextClipToRect(context, CGRectMake(0, 0, cropRect.size.width, cropRect.size.height));
[self drawInRect:drawRect];
UIImage* croppedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return croppedImage;
正如我看到你发送的所有图片链接似乎被裁剪到中间,也许有点重采样 - 所以你可以看到更多的画面,但它不是那么讨厌 – SergeS 2011-02-01 20:22:17
谢谢,SergeS。他们如何以编程方式执行此操作? – Crashalot 2011-02-01 23:25:27