2012-06-22 49 views
5

我遇到了核心图像问题。我正在做的是从UIImageView中获取图像,然后使用我在教程中找到的一些代码(我是核心图像的新手),但是当我尝试使用相同的UIImageView时,我想将棕褐色图像放回到相同的UIImageView中把新的图像放入它刚刚消失的视图中我已经测试过,以查看图像视图是否包含图像,但它确实存在但不可见。有什么建议做什么?如何正确应用核心图像过滤器

编辑: 好吧我得到了棕褐色过滤器工作,所以然后我尝试posterize和我有同样的问题,图像就消失了。下面是代码:

CIImage *beginImage = [CIImage imageWithCGImage:[image_view.image CGImage]]; 
context = [CIContext contextWithOptions:nil]; 
filter = [CIFilter filterWithName:@"CIColorPosterize" keysAndValues:kCIInputImageKey, beginImage,@"inputLevels",[NSNumber numberWithFloat:0.8], nil]; 
CIImage *outputImage = [filter outputImage]; 
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 
UIImage *newImg = [UIImage imageWithCGImage:cgimg]; 
[image_view setImage:newImg]; 
CGImageRelease(cgimg); 
+0

上成功签后,你有迄今的代码! – trumpetlicks

+0

刚发布! –

+0

iOS SDK中缺少CoreImage筛选器。我相信posterize是其中之一。 Google for iOS支持CoreImage过滤器以获得支持列表。 –

回答

11

尝试是这样的(让说你有一个的UIImageView * myImageView)

CIImage *beginImage = [CIImage imageWithCGImage:[myImageView.image CGImage]]; 
CIContext *context = [CIContext contextWithOptions:nil]; 

CIFilter *filter = [CIFilter filterWithName:@"CISepiaTone" keysAndValues: kCIInputImageKey, beginImage, @"inputIntensity", [NSNumber numberWithFloat:0.8], nil]; 
CIImage *outputImage = [filter outputImage]; 

CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 
UIImage *newImg = [UIImage imageWithCGImage:cgimg]; 

[myImageView setImage:newImg]; 

CGImageRelease(cgimg); 
+0

啊!这样可行!非常感谢! –

+0

此答案的来源:http://www.raywenderlich.com/22167/beginning-core-image-in-ios-6 –

+3

或者:http://blog.objectgraph.com/index.php/2011/ 12/31/core-image-framework-in-ios-5-0 /或这个:http://books.google.com/books?id=ANOhiaaOwjAC&pg=PA633&lpg=PA633&dq=cisepiatone&source=bl&ots=aRg2fklJUm&sig=8eb3ThWDPwqmkz0ZN-8WHZQLb6w&hl = en&sa = X&ei = -_ XPU8mkDIeCzAP40oKYCw&redir_esc = y#v = onepage&q = cisepiatone&f = false或http://technet.weblineindia.com/mobile/apply-image-filters-using-coreimage-framework-in-ios/2/或... – Ladislav

0

在雨燕3.0的Xcode 8.2相同的代码(我的项目ImageView的是“@IBOutlet VAR photoImageView:UIImageView的“) 的iPhone 7Plus的设备的iOS 10

guard let myImageView = self.photoImageView.image else 
    { 
     return 
    } 
    guard let cg = myImageView.cgImage else 
    { 
     return 
    } 
    let beginImage = CIImage(cgImage: cg) 
    let context : CIContext = CIContext(options: nil) 
    let inputParams : [String : Any]? = [kCIInputImageKey : beginImage, 
             "inputIntensity" : NSNumber(value : 0.8)] 
    let filter : CIFilter = CIFilter(name: "CISepiaTone", withInputParameters: inputParams)! 
    let outputImage : CIImage? = filter.outputImage! 

    if let outputImage = outputImage 
    { 
     let cgImage : CGImage? = context.createCGImage(outputImage, from: outputImage.extent)! 

     if let cg = cgImage 
     { 
      let newImage : UIImage = UIImage(cgImage: cg) 
      photoImageView.image = newImage 
     } 
    } 
相关问题