Ho un UIImage che viene caricato da un CIImage con:Ottenere un CGImage da CIImage
tempImage = [UIImage imageWithCIImage:ciImage];
Il problema è che ho bisogno di ritagliare tempImage
ad una specifica CGRect
e l'unico modo che conosco come fare questo è usando CGImage
. Il problema è che nella documentazione di iOS 6.0 Ho trovato questo:
CGImage
If the UIImage object was initialized using a CIImage object, the value of the property is NULL.
A. Come convertire da CIImage a CGImage? Sto usando questo codice, ma ho una perdita di memoria (e non riesco a capire dove):
+(UIImage*)UIImageFromCIImage:(CIImage*)ciImage {
CGSize size = ciImage.extent.size;
UIGraphicsBeginImageContext(size);
CGRect rect;
rect.origin = CGPointZero;
rect.size = size;
UIImage *remImage = [UIImage imageWithCIImage:ciImage];
[remImage drawInRect:rect];
UIImage *result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
remImage = nil;
ciImage = nil;
//
return result;
}
Si dice che è necessario il CGImage per fare il raccolto. Come ha detto Joris Kluivers, puoi eseguire il ritaglio senza CGImage usando il filtro CICrop sul CIImage. C'è qualcos'altro che ti serve il CGImage? E allora? –
Inoltre, per quanto riguarda la perdita di memoria, hai provato a usare il modello di Leaks di Instruments? Tra lo strumento Leaks e lo strumento Heapshot dello strumento Allocations, dovresti riuscire a individuare dove nella tua app stavi perdendo o accumulando memoria. –
@PeterHosey Ho fatto e ho scoperto che per qualche ragione ho oltre 200 istanze live di CIImage e oltre 100 di CGImage, tutte originate da questo metodo. Semplicemente non vedo dove – tagyro