我遇到了屏蔽图像的问题。我做游戏“拼图”,并且必须制作自定义图像。我发现并尝试了两种自定义裁剪方式:
CALayer.mask
属性。UIImage.mask
属性。 在第一个选项中,我创建自定义路径,然后将其分配给CAShapeLayer.path
属性,然后将CAShapeLayer
分配给CALayer.mask
属性。最后我有自定义裁剪图像。
在第二个选项中,我首先使用CGImageMaskCreate()
方法(我使用之前创建的拼图的黑色蒙版图像),然后使用CGContextClipToMask()
。
在任何一个选项中我都有性能问题(主要是当我将图像裁剪成16个谜题并在屏幕上拖动时)。
是否有其他方法以自定义方式裁剪图像。 (我不知道如何解决性能问题)。 提前致谢。
答案 0 :(得分:6)
你可以使用很多UIImage类别。给我一点时间,我会在这里发布一些链接:
答案 1 :(得分:0)
试试这个:
-(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];
答案 2 :(得分:0)
也许您应该考虑在具有alpha背景的新图像中绘制图像,并将当前背景透支。我的意思是:拼图内部的所有像素:正常颜色,拼图之外的所有像素=透明。然后尝试将其混合到新的背景或透支。
只需2美分。 :)