Как собрать два объекта UIImage в один UIImage вне -drawRect :? - PullRequest
2 голосов
/ 30 мая 2011

У меня есть несколько объектов UIImage, которые я хочу собрать в один UIImage, а затем сохранить его на диск.Я не отображаю это на экране, поэтому нет смысла делать это в -drawRect.

Есть ли способ создать контекст, похожий на -drawRect:, а затем просто нарисовать объекты UIImage, используя что-то вроде CGContextDrawImage(context, imgRect, img.CGImage);?

Ответы [ 2 ]

5 голосов
/ 30 мая 2011

Полагаю, вы хотите использовать CGContextRef , чтобы нарисовать все изображения в нужном месте, а затем получить полученное изображение.Код будет выглядеть примерно так:

CGContextRef context = CGBitmapContextCreate(nil, desired_width, desired_height, bitsPerComponent, bytesPerRow, CGColorSpaceCreateDeviceRGB(), CGImageGetBitmapInfo(image));
//This code is to ilustrate what you have to do:
for(image in your Images) {

    CGContextDrawImage(context, CGRectMake(currentImage.frame.origin.x, currentImage.frame.origin.y, CGImageGetWidth(currentImage), CGImageGetHeight(currentImage), currentImage);
}

CGImageRef mergeResult  = CGBitmapContextCreateImage(context);

mergedImage = [[UIImage alloc] initWithCGImage:mergeResult];
CGContextRelease(context);
CGImageRelease(mergeResult);
4 голосов
/ 30 мая 2011

CGContextRefs можно создавать в любое время, и это позволяет вам выполнять любые виды манипуляций с изображениями.

Используйте CGBitmapContextCreate для создания контекста и CGBitmapContextCreateImage для получения окончательного результата.

...