在 iPhone 中裁剪图像的某些部分(以某种形状)

Posted

技术标签:

【中文标题】在 iPhone 中裁剪图像的某些部分(以某种形状)【英文标题】:Crop Some Part of image (in some shape) in iPhone 【发布时间】:2011-11-14 14:00:07 【问题描述】:

我想做的是:

我在 iPhone 屏幕上有一张图片。

现在,用户将在图像上移动手指。就像他会做圆形、三角形、方形或星形一样。 (不用担心,move会有闭环)。

现在,当用户完成移动时,意味着用户将制作圆形、三角形或任何其他形状,然后应该裁剪该部分图像。

有没有人有这个想法或与此相关的任何东西?

如果有更多细节,请告诉我。

谢谢。

【问题讨论】:

【参考方案1】:

您应该阅读Quartz2D Programming Guide,它解释了 CoreGraphics 如何帮助您做到这一点。

特别是有一个部分专门介绍路径 (NSBezierPaths)、剪辑区域、图像蒙版等等。在您的情况下,可能需要蒙版,但可能需要更多的剪切区域。

您还可以使用路径将其他对象的绘制限制在路径范围内,实际上创建了一个剪切区域。

(您在文档中看到的捕获是 MacOSX 窗口,但当然您可以在 iPhone 上执行完全相同的操作,Quartz2D 上的文档对于这两种环境都非常通用)

【讨论】:

【参考方案2】:

这对我有用

if (!self.pictureImageViewMasked) 

        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(0.0, 0.0)];

        [path addLineToPoint:CGPointMake(50.0, 0.0)];
        [path addLineToPoint:CGPointMake(50.0, 50.0)];
        [path addLineToPoint:CGPointMake(0.0, 50.0)];
        [path closePath];

        if (![[self.pictureImageView layer] mask]) 
            [[self.pictureImageView layer] setMask:[CAShapeLayer layer]];
        
        [(CAShapeLayer*)[[self.pictureImageView layer] mask] setPath:[path CGPath]];

        self.pictureImageViewMasked = YES;

    

【讨论】:

以上是关于在 iPhone 中裁剪图像的某些部分(以某种形状)的主要内容,如果未能解决你的问题,请参考以下文章

从 iPhone 的照片库中调整方形裁剪图像的正确方法而不会失真

如何在黑莓中裁剪具有特定形状的图像?

在android中以不规则形状裁剪图像无法正常工作

根据放置在相机上的视图裁剪图像的特定部分

使用 MS Office 图片管理器从 JPEG 图像中裁剪颜色

通过自定义形状裁剪 UIImage