得到一个CGImage我有从CIImage装有一个UIImage:从CIImage
tempImage = [UIImage imageWithCIImage:ciImage];
的问题是我需要裁剪tempImage
到特定CGRect
,我知道怎么做的唯一途径这是通过使用CGImage
。 问题是,iOS的6.0文档中,我发现这个:
CGImage
If the UIImage object was initialized using a CIImage object, the value of the property is NULL.
A.如何转换CIImage到CGImage? 我使用这个代码,但我有内存泄漏(而不能明白的地方):
+(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;
}
您提到您需要使用CGImage进行裁剪。正如Joris Kluivers所说,您可以通过在CIImage上使用CICrop过滤器来在没有CGImage的情况下进行裁剪。还有什么您需要CGImage的?如果是这样,什么? –
另外,关于内存泄漏,您是否尝试使用Instruments的泄漏模板?在Leaks工具和Allocations工具的Heapshot工具之间,您应该能够确定您的应用程序泄漏或累积内存的位置。 –
@PeterHosey @PeterHosey我做过了,我发现出于某种原因,我有超过200个CIImage实例和超过100个CGImage,都来自这种方法。我只是看不到在哪里 – tagyro