2010-12-14 5 views
6
CGContextRef context = ??; // get from UIImage *oldImage 

    CGContextSaveGState(context); 
    CGRect drawRect = CGRectMake(0, 0, 320, 480); 
    CGContextConcatCTM(context, transform); 
    UIImage *newImage = [[UIImage alloc] init]; 
    CGContextDrawImage(context, drawRect, newImage.CGImage); 
    [newImage drawInRect:CGRectMake(0, 0, 320, 480)]; 

    CGContextRestoreGState(context);

Короче говоря, я хочу сделать [UIImage -> make transform -> преобразованный UIImage].Как я могу получить CGContextRef из UIImage?

Любые идеи? Большое спасибо!!

ответ

8

Я думаю, что вам нужно это:

UIGraphicsBeginImageContextWithOptions(newImageSize, YES, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
// drawing commands go here 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Обратите внимание, что UIGraphicsGetImageFromCurrentImageContext() возвращает autoreleased экземпляра UIImage.

+0

Спасибо, но что я получил вверх тормашками, даже я ничего не сделал? –

+0

Если вы используете Core Graphics для рисования (например, 'CGContextDrawImage()'), помните, что он использует перевернутую систему координат. Методы рисования UIImage не требуют предварительной очистки системы координат. – Costique

+0

Noob question: Это кажется ужасно расточительным ... Я просто хочу добавить немного данных поверх моего изображения. Мне не нравится перерисовывать всю вещь для этого. – Ralphleon