Objective c 将CIFilter应用于图像会生成空UIImage
我正在尝试对从UIImagePickerController接收的图像应用CIFilter。以下是我正在使用的代码:Objective c 将CIFilter应用于图像会生成空UIImage,objective-c,xcode,cocoa-touch,core-image,cifilter,Objective C,Xcode,Cocoa Touch,Core Image,Cifilter,我正在尝试对从UIImagePickerController接收的图像应用CIFilter。以下是我正在使用的代码: - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:YES completion:nil]; UIIma
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *userImage = info[UIImagePickerControllerOriginalImage];
UIImage *croppedImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(userImage.CGImage, CGRectMake(0, 320, 640, 640))];
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *img = [CIImage imageWithCGImage:croppedImage.CGImage];
CIFilter *adjustFilter = [CIFilter filterWithName:@"CILineOverlay"];
[adjustFilter setDefaults];
[adjustFilter setValue:img forKey:kCIInputImageKey];
[adjustFilter setValue:[NSNumber numberWithFloat:1.0] forKey:@"inputNRSharpness"];
CIImage *adjustedImage = [adjustFilter valueForKey:kCIOutputImageKey];
UIImage *newImage = [UIImage imageWithCIImage:[context createCGImage:adjustedImage fromRect:adjustedImage.extent]];
NSLog(@"%@", newImage);
self.myImageView.image = newImage;
}
现在,当应用过滤器的过程完成时,不会出现错误,尽管控制台会记录,但在图像视图中看不到图像。如果我跳过处理部分,只将未过滤的裁剪图像指定给图像视图,它将显示良好
那么我做错了什么?我想用这段代码来处理一个屏幕截图,但我用一张照片试过了,结果还是一样的零。在iOS中还没有。这有一个开源库,请尝试这3个过滤器,它可能会对您有所帮助!1 GPUImageCrosshatchFilter 2 GPUImageSketchFilter 3 GPUImageToonFilter