[英]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.