2012-06-22 9 views
5

Mam problem z obrazem rdzenia. to, co robię, to uzyskanie obrazu z UIImageView, a następnie użycie kodu znalezionego w tutorialach (jestem nowy dla Core Image), ale potem chcę umieścić obraz w sepii z powrotem w tym samym UIImageView, gdy kiedykolwiek spróbuję umieść nowy obraz w widoku, który po prostu zniknął Przetestowałem, aby zobaczyć, czy widok obrazu zawiera obraz, ale robi to, ale nie jest widoczny. wszelkie sugestie dotyczące tego, co należy zrobić?jak poprawnie zastosować filtr obrazu rdzenia

EDIT: OK, mam filtr sepii do pracy, więc spróbowałem posterize i miałem taki sam problem, że obraz po prostu znika. Oto kod:

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

postu kod masz do tej pory !!! – trumpetlicks

+0

właśnie wysłali to! –

+0

Brakuje filtrów CoreImage w pakiecie SDK iOS. Uważam, że posterize jest jednym z nich. Google for iOS obsługiwane filtry CoreImage dla listy obsługiwanych. –

Odpowiedz

11

Spróbuj coś takiego (powiedzmy masz 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

ah! To działa! Dziękuję bardzo! –

+0

Źródło tej odpowiedzi: http://www.raywenderlich.com/22167/beginning-core-image-in-ios-6 –

+3

Lub to: http://blog.objectgraph.com/index.php/2011/ 12/31/core-image-framework-in-ios-5-0/lub: 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 lub ten http://technet.weblineindia.com/mobile/apply-image-filters-using-coreimage-framework-in-ios/2/ lub ... – Ladislav

0

sam kod w Swift 3.0 w Xcode 8.2 (My ImageView w projekcie jest „@IBOutlet var photoImageView: UIImageView ") sprawdzone z powodzeniem na urządzeniu 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 
     } 
    } 
Powiązane problemy