我是Objective-C的新手,但我需要编写一个快速方法,将UIImage划分为固定大小的方块,然后混合它们。我已经通过以下方式实现了它:
它按预期工作,但速度极慢。在iPhone 4S上处理单个1024x768 PNG大约需要12秒。 Inspector显示方法以某种方式连接到PNGRepresentation,占用总运行时间的约50%。
如果我在这里以某种方式使用Quartz2D,它可能会更快吗?我现在只是试图从我的_image复制/粘贴一个矩形,但我不知道如何进一步。它返回一个UIImage,其中_image按原样提供,没有粘贴blockLayer:
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), YES, 1.0);
CGContextRef context = UIGraphicsGetCurrentContext();
/* Start drawing */
//Draw in my image first
[_image drawAtPoint:CGPointMake(0,0) blendMode:kCGBlendModeNormal alpha:1.0];
//Here I am trying to make a 400x400 square, starting presumably at the origin
CGLayerRef blockLayer = CGLayerCreateWithContext(context, CGSizeMake(400, 400), NULL);
//Then I attempt to draw it back at the middle
CGContextDrawLayerAtPoint(context, CGPointMake(1024/2, 768/2), blockLayer);
CGContextSaveGState(context);
/* End drawing */
//Make UIImage from context
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
答案 0 :(得分:2)
您可以按照以下步骤执行操作:
CALayer
,在洗牌之前将位置设置为图片中方块的位置