【问题标题】:How to create an image from a UIView / UIScrollView如何从 UIView / UIScrollView 创建图像
【发布时间】:2011-01-30 20:24:34
【问题描述】:

我在 UIScrollView 中有一张图片,可以滚动和缩放。

当用户按下按钮时,我希望代码从我用 CGRect 指定的区域内的 UIScrollView 的任何部分创建图像。

我见过裁剪 UIImages 的代码,但我无法调整它来为视图做同样的事情,因为它使用 CGContextDrawImage。

有什么想法吗?

干杯, 安德烈

【问题讨论】:

    标签: iphone xcode image uiscrollview crop


    【解决方案1】:

    我已经成功了。

    这是我的解决方案,基于网络上的一些不同的解决方案:

    - (UIImage *)imageByCropping:(UIScrollView *)imageToCrop toRect:(CGRect)rect
    {
        CGSize pageSize = rect.size;
        UIGraphicsBeginImageContext(pageSize);
    
        CGContextRef resizedContext = UIGraphicsGetCurrentContext();
        CGContextTranslateCTM(resizedContext, -imageToCrop.contentOffset.x, -imageToCrop.contentOffset.y);
        [imageToCrop.layer renderInContext:resizedContext];
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    
        UIGraphicsEndImageContext();
    
        return image;
    }
    

    您使用以下方式调用:

    CGRect clippedRect = CGRectMake(0, 0, 320, 300);
    picture.image = [self imageByCropping:myScrollView toRect:clippedRect];
    

    【讨论】:

    • 这很有帮助,谢谢。不过,该方法中的一个小错误:它指的是 scrollView,尽管它应该指代 imageToCrop,以防调用者没有将视图命名为“scrollView”。
    • 你说的完全正确 :) 我很高兴你发现它很有用。干杯
    • 这很有用!谢谢安德烈
    • 太棒了!谢谢 :) 但是,如何裁剪分辨率高于 320*480 的图像。还需要处理原图吗?
    • 我从来没有尝试过,我也不是专家,但如果你不能让它在比屏幕大的尺寸下工作,那可能是因为视图的框架边界。我会将视图的大小更改为您想要的尺寸,运行脚本,然后再次将视图的大小更改为原始尺寸。不过我可能完全错了。
    猜你喜欢
    • 2020-07-29
    • 2018-10-04
    • 1970-01-01
    • 2011-12-23
    • 2011-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2010-12-11
    相关资源
    最近更新 更多