tag*_*yro 18 core-graphics core-image cgimage ios ciimage
我有一个从CIImage加载的UIImage:
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;
}
Run Code Online (Sandbox Code Playgroud)
Jor*_*ers 23
请参阅createCGImage的CIContext文档:fromRect:
CGImageRef img = [myContext createCGImage:ciImage fromRect:[ciImage extent]];
Run Code Online (Sandbox Code Playgroud)
从答案到类似的问题:https://stackoverflow.com/a/10472842/474896
此外,由于你有一个CIImage开始,你可以CIFilter用来实际裁剪你的图像.
sky*_*ook 17
Swift 3和Swift 4
这是一个很好的小函数,CIImage可以CGImage在Swift中转换为.
func convertCIImageToCGImage(inputImage: CIImage) -> CGImage? {
let context = CIContext(options: nil)
if let cgImage = context.createCGImage(inputImage, from: inputImage.extent) {
return cgImage
}
return nil
}
Run Code Online (Sandbox Code Playgroud)