[英]Objective-C (iOS), Image resizing using CIFilter produces invalid output (UIImage)
[英]Passing a UIImage through a CIFilter produces a blank image
我的應用程序將過濾器添加到選定的圖像。 該應用程序的工作方式如下:
當我按下按鈕添加濾鏡時,主圖像視圖將完全變為白色。 但是,當我最初從選擇器加載圖像時,它顯示得很好。 這是添加過濾器的代碼。
- (IBAction)addFilter:(id)sender {
if(_imageToFilter)
{
CIImage *newImage = _imageToFilter.CIImage;
CIFilter *myFilter = [CIFilter filterWithName:@"CIColorInvert" keysAndValues:@"inputImage",newImage, nil];
CIImage *filteredImage = [myFilter outputImage];
UIImage *outputImage = [UIImage imageWithCIImage:filteredImage];
[mainImage setImage:outputImage];
}
}
CIImage * inputImage被分配為nil
可能是問題所在。 嘗試使用CIImage的initWithImage:
而不是_imageToFilter.CIImage
(有關以下編輯的更多信息):
-(IBAction)addFilter:(id)sender {
if(_imageToFilter) {
CIImage *inputImage = [[CIImage alloc] initWithImage:_imageToFilter];
CIFilter *myFilter = [CIFilter filterWithName:@"CIColorInvert" keysAndValues:@"inputImage",newImage, nil];
CIImage *filteredImage = [myFilter outputImage];
UIImage *outputImage = [UIImage imageWithCIImage:filteredImage];
[mainImage setImage:outputImage];
}
}
編輯:根據評論的反饋,問題似乎是_imageToFilter.CIImage
返回nil
。 來自docs :“如果UIImage對象是使用CGImageRef初始化的,則該屬性的值為nil。”
使用CIImage初始化方法initWithImage:使用UIImage初始化CIImage對象,從而解決了該問題。 其余代碼工作正常,因此我將其返回到原始的filterWithName:keysAndValues:,以專注於有問題的部分。 更多關於:這里的問題: 誰能告訴我為什么UIImage.ciimage為null
感謝您的反饋,希望答案能幫助OP。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.