【问题标题】:CIImage size extent zero?CIImage大小范围为零?
【发布时间】:2016-11-17 12:45:09
【问题描述】:

我创建了这个类别来将CIImage 转换为UIImage。我使用的CIImages 来自CIFilters。

-(UIImage *)obtainImageWithRetinaScale:(CGFloat)scale
{
  CIContext *context = [CIContext contextWithOptions:nil];

  //CGRect frame = CGRectMake(0,0,700,392);
  CGImageRef processedCGImage = [context createCGImage:self
                                              fromRect:[self extent]];

  UIImage *returnImage = [UIImage imageWithCGImage:processedCGImage
                                    scale:scale
                              orientation:UIImageOrientationUp];
  CGImageRelease(processedCGImage);

  return returnImage;
}

运行时,[self extent] 给出一个带有乱码的矩形,几乎是 (0, 0, infinity, infinity) ... 那里的数字非常大。

显然处理后的图像为零。

当我强制使用正确大小的帧时,图像会正确生成。

【问题讨论】:

标签: ios cgimage cifilter ciimage


【解决方案1】:

使用以下代码,在他的回答 here 中,学分完全归于 William Vasconcelos,这就是我将其设为社区 wiki 的原因:

//assume beginImage is CIImage you want to tint            
CIImage* outputImage = nil;

//create some blue
CIFilter* blueGenerator = [CIFilter filterWithName:@"CIConstantColorGenerator"];
CIColor* blue = [CIColor colorWithString:@"0.1 0.5 0.8 1.0"];
[blueGenerator setValue:blue forKey:@"inputColor"];
CIImage* blueImage = [blueGenerator valueForKey:@"outputImage"];

//apply a multiply filter
CIFilter* filterm = [CIFilter filterWithName:@"CIMultiplyCompositing"];
[filterm setValue:blueImage forKey:@"inputImage"];
[filterm setValue:beginImage forKey:@"inputBackgroundImage"];
outputImage = [filterm valueForKey:@"outputImage"];

为了带来一些个人贡献并使其值得回答,这里是 Swift 3 版本:

// assume beginImage is the CIImage you want to tint
let outputImage: CIImage?
let blueGenerator = CIFilter(name: "CIConstantColorGenerator", withInputParameters: ["inputColor": CIColor(string: "0.1 0.5 0.8 1.0")])
let blueImage = blueGenerator!.outputImage

let filterM = CIFilter(name: "CIMultiplyCompositing", withInputParameters: ["inputImage": blueImage, "inputBackgroundImage": beginImage])
outputImage = filterM.outputImage

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 2012-07-03
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多