2010-12-14 4 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);

W skrócie, chcę tylko [UIImage -> zrobić transformację -> transformowane UIImage].Jak mogę uzyskać CGContextRef z UIImage?

Wszelkie pomysły? Wielkie dzięki!!

Odpowiedz

8

myślę, czego potrzebujesz to:

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

Zauważ, że UIGraphicsGetImageFromCurrentImageContext() zwraca autoreleased instancji UIImage.

+0

Dzięki, ale co dostałem odwrotny obraz, nawet ja nie zrobiłem nic? –

+0

Jeśli używasz Core Graphics do rysowania (np. 'CGContextDrawImage()'), pamiętaj, że używa on odwróconego układu współrzędnych. Metody rysowania UIImage nie wymagają wstępnego odwrócenia układu współrzędnych. – Costique

+0

Noob pytanie: to wydaje się strasznie marnotrawstwo ... Chcę tylko dodać trochę danych na szczycie mojego obrazu. Nienawidzę przerysowywać całej rzeczy za to. – Ralphleon