簡體   English   中英

iOS:圖像過濾器CIFilter狀態未維護

[英]iOS: image filter CIFilter state not maintained

我正在嘗試CIFilter在圖像上應用各種效果(亮度,對比度,飽和度等)。

圖像濾鏡成功應用。 但是無法保持編輯圖像的最后狀態,例如: 如果我增加圖像的亮度,然后將對比度應用於編輯后的圖像,則對比度將應用於原始圖像,而不是應用於亮度增加的圖像

以下是代碼:

    - (IBAction)contrastSliderValueChanged:(id)sender {

        filter=NULL;
        result=NULL;
        cgimg=NULL;
        newimg=NULL;



        if (adjustMenuTag==1) {

            filter=[CIFilter filterWithName:@"CIColorControls"];
            [filter setDefaults];
            [filter setValue:beginImage forKey:@"inputImage"];
            [filter setValue:[NSNumber numberWithFloat:contrastSlider.value] forKey:@"inputBrightness"] ;
            result=[filter valueForKey:kCIOutputImageKey];

            cgimg=[context createCGImage:result fromRect:[result extent]];
            newimg=[UIImage imageWithCGImage:cgimg];


            imageViewDisplay.image=newimg;
            beginImage = result;
            CFRelease(cgimg);
    //        beginImage = [[CIImage alloc] initWithImage:imageViewDisplay.image];


        } else if(adjustMenuTag ==2 ) {

            filter=[CIFilter filterWithName:@"CIColorControls"];
            [filter setDefaults];
            [filter setValue:beginImage forKey:@"inputImage"];
            [filter setValue:[NSNumber numberWithFloat:contrastSlider.value+0.5] forKey:@"inputContrast"] ;
            result=[filter valueForKey:kCIOutputImageKey];
            cgimg=[context createCGImage:result fromRect:[result extent]];
            newimg=[UIImage imageWithCGImage:cgimg];
            imageViewDisplay.image=newimg;
            beginImage = result;
            CFRelease(cgimg);
    //        beginImage = newimg.CIImage;  //this also doesn't work.
        }
}

我要去哪里錯了? 我該如何解決? 如何保持編輯圖像的狀態?

查看代碼,似乎每次選擇菜單項時都在創建CIColorControls過濾器的新實例。 您應該創建一個,保留它,並根據需要更新其輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM