2012-06-22 3 views
5

Ho problemi con l'immagine Core. quello che sto facendo è ottenere un'immagine da un UIImageView e poi usare un codice che ho trovato nei tutorial (sono nuovo nell'immagine core) ma poi voglio riportare l'immagine seppia nello stesso UIImageView quando cerco sempre di metti la nuova immagine nella vista che scompare appena ho provato per vedere se la vista dell'immagine contiene un'immagine e lo fa ma non è visibile. qualche suggerimento su cosa fare?come applicare correttamente il filtro Image Core

MODIFICA: OK ho ottenuto il filtro seppia per funzionare, quindi ho provato posterize e ho avuto lo stesso problema l'immagine scompare. Ecco il codice:

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

postale il codice che avete finora !!! – trumpetlicks

+0

appena pubblicato! –

+0

Mancano i filtri di CoreImage dall'SDK di iOS. Credo che posterizzare sia uno di questi. Google per iOS ha supportato i filtri CoreImage per l'elenco di quelli supportati. –

risposta

11

provare qualcosa di simile (per non dire di avere un 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! Che funzioni! grazie mille! –

+0

La fonte di questa risposta: http://www.raywenderlich.com/22167/beginning-core-image-in-ios-6 –

+3

O questo: http://blog.objectgraph.com/index.php/2011/ 12/31/core-image-framework-in-ios-5-0/oppure questo: 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 e redir_esc = y # v = onepage & q = cisepiatone & f = false o questo http://technet.weblineindia.com/mobile/apply-image-filters-using-coreimage-framework-in-ios/2/ o ... – Ladislav

0

stesso codice in Swift 3.0 su Xcode 8.2 (My IMAGEVIEW nel progetto è "@IBOutlet var photoImageView: UIImageView ") Controllato con successo su un dispositivo 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 
     } 
    }