如何将图像分割成多个部分?

时间:2009-06-17 13:36:57

标签: iphone cocoa-touch image-manipulation uiimage

任何机构都可以向我解释一下图像在iPhone OS中如何(同等地和不等地)分成多个部分。如果您提供示例代码,对我非常有帮助。

2 个答案:

答案 0 :(得分:8)

我已经调整了Bill DudneyCore Animation Book中的一些代码来完成此任务:

- (NSArray*)splitImageIntoRects:(CGImageRef)anImage{

    CGSize imageSize = CGSizeMake(CGImageGetWidth(anImage), CGImageGetHeight(anImage));

    NSMutableArray *splitLayers = [NSMutableArray array];

            kXSlices = 3;
            kYSlices = 3;        

    for(int x = 0;x < kXSlices;x++) {
        for(int y = 0;y < kYSlices;y++) {
            CGRect frame = CGRectMake((imageSize.width / kXSlices) * x,
                                     (imageSize.height / kYSlices) * y,
                                     (imageSize.width / kXSlices),
                                     (imageSize.height / kYSlices));

            CALayer *layer = [CALayer layer];
            layer.frame = frame;                                                    
            CGImageRef subimage = CGImageCreateWithImageInRect(drawnImage, frame);
            layer.contents = (id)subimage;
            CFRelease(subimage);
            [splitLayers addObject:layer];
        }
    }
    return splitLayers; 
}

注意:获取CGImageRef:

CGImageRef anImage = [myUIImage CGImage];

答案 1 :(得分:1)

如果您只想要由NSRect定义的区域,那么this code应该这样做。如果您需要更复杂的区域(非矩形),那么Apple的Cropped Image example包含用于裁剪到Bezier曲线的代码(请参阅CroppingImageView.m中的-croppedImage)。