从UIView获取调整大小的屏幕截图

Kal*_*lle 2 iphone image-processing uiimage ios4

我正在尝试使用以下代码将UIView缩小的屏幕截图缩小到缩略图大小,

    UIGraphicsBeginImageContext(size);
    [canvas.layer renderInContext:UIGraphicsGetCurrentContext()];
    result = [UIGraphicsGetImageFromCurrentImageContext() retain];
    UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

上面的代码将简单地抓取原始未填充大小的视图的左上部分.

我确定我之前已经这样做了,但我无法让它发挥作用.谁知道这里有什么?

Kal*_*lle 7

假设您有一个CGSize origSize原始大小(例如768x1024)和一个CGSize size所需大小,可以这样做:

CGFloat scaleX = size.width / origSize.width;
CGFloat scaleY = size.height / origSize.height;
UIGraphicsBeginImageContextWithOptions(origSize, NO, scaleX > scaleY ? scaleY : scaleX);
[canvas.layer renderInContext:UIGraphicsGetCurrentContext()];
result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)

请注意,我们origSize在开始的上下文中使用,而不是size.比例也会影响尺寸.

更新(大约一年后):请注意,此技术会干扰UIView正在拍摄的变换(或受其干扰).如果上面的方法不起作用并且您正在对视图(或其图层)进行缩放转换,您可能需要使用此解决方案:如何缩小UIImage并同时使其变得清脆/锐利而不是模糊?