【问题标题】:Custom image mask in iOSiOS中的自定义图像蒙版
【发布时间】:2011-08-18 08:17:33
【问题描述】:

我遇到了屏蔽图像的问题。我做游戏“拼图”并且必须制作自定义图像。我发现并尝试了 2 种自定义裁剪方式:

  1. 使用CALayer.mask 属性。
  2. 使用UIImage.mask 属性。

在第一个选项中,我创建自定义路径,然后将其分配给 CAShapeLayer.path 属性,然后将 CAShapeLayer 分配给 CALayer.mask 属性。最后我有自定义裁剪图像。 在第二个选项中,我首先使用CGImageMaskCreate() 方法(我使用之前创建的拼图黑色蒙版图像),然后使用CGContextClipToMask()。 在任一选项中,我都遇到了性能问题(主要是当我将图像裁剪成 16 个拼图并在屏幕上拖动时)。

是否有任何其他方法以自定义方式裁剪图像。 (我不知道如何解决性能问题)。 提前致谢。

【问题讨论】:

  • 您要问的不是裁剪,而是蒙版。您一再声明要屏蔽非矩形区域;裁剪几乎总是指矩形区域。您可能需要相应地调整问题。

标签: iphone ios calayer puzzle cashapelayer


【解决方案1】:

【讨论】:

  • 感谢蒂姆·范·埃尔斯洛的回答。但是此链接包含有关裁剪矩形图像的手册。但我需要一个习惯。不是矩形。喜欢这个:imageshack.us/f/856/hard131.png
【解决方案2】:

试试这个:

-(UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}

...

UIImage *temp_image = [self imageByCropping:original_image toRect:clipping_rectangle];

【讨论】:

  • 谢谢你的回答,马丁。但是您的源代码只能裁剪矩形区域。但我不需要它。我需要将矩形图像裁剪成这个:imageshack.us/f/856/hard131.png.
【解决方案3】:

也许您应该考虑在具有 alpha 背景的新图像中绘制图像,并过度绘制当前背景。我的意思是:拼图块内的所有像素:正常颜色,拼图块外的所有像素=透明。然后尝试将其混合到新背景或过度绘制它。

只有我的 2 美分。 :)

【讨论】:

    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 2012-12-11
    • 2015-11-11
    • 1970-01-01
    • 2020-10-29
    • 2017-07-01
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多