Как я могу разделить изображение на несколько частей? - PullRequest
3 голосов
/ 17 июня 2009

Может ли кто-нибудь объяснить мне, как изображение может быть (одинаково и неравно) разделено на несколько частей в iPhone OS. Мне очень полезно, если вы предоставите пример кода.

Ответы [ 2 ]

8 голосов
/ 17 июня 2009

Я адаптировал некоторый код, полученный из Билла Дадни Базовая книга анимации для выполнения этой задачи:

- (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 голос
/ 17 июня 2009

Если вы просто хотите, чтобы регион определялся NSRect, тогда этот код должен сделать это. Если вам нужны более сложные области (непрямоугольные), то в примере обрезанного изображения Apple имеется код для обрезки до кривой Безье (см. -croppedImage в CroppingImageView.m).

...