【问题标题】:CIFourfoldRotatedTile Core Image FilterCIFourfoldRotatedTile 核心图像过滤器
【发布时间】:2013-10-24 20:48:12
【问题描述】:

以下是我尝试应用以在图像上获取 CIFourfoldRotatedTile 过滤器的代码,但我在输出中得到一个 nil 图像。

CIContext *context = [CIContext contextWithOptions:nil];               // 1
CIImage *aimage = [CIImage imageWithCGImage:[UIImage imageNamed:@"Image1.png"].CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIFourfoldRotatedTile"];           // 3
[filter setValue:aimage forKey:kCIInputImageKey];
[filter setValue:[CIVector vectorWithCGPoint:CGPointMake(200, 200)] forKey:@"inputCenter"];
[filter setValue:[NSNumber numberWithFloat:2.0] forKey:@"inputAngle"];
[filter setValue:[NSNumber numberWithFloat:50] forKey:@"inputWidth"];

CIImage *result = [filter valueForKey:kCIOutputImageKey];              // 4
CGRect extent = [result extent];
CGImageRef cgImage = [context createCGImage:result fromRect:extent];
UIImage *finalImage = [UIImage imageWithCGImage:cgImage];
self.imgview.image = finalImage;

不知道我输入了哪个参数错误。请指导我。 谢谢。

【问题讨论】:

    标签: ios ios6 core-image


    【解决方案1】:

    我刚刚检查了你的代码,发现extent 在这里是无限的,即你得到一个nil 图像。我只是在这里做了一点改变,给你的框架加分

    CGRect extent = CGRectMake(0.0, 0.0, image.size.width, image.size.height); 
    

    CGRect extent = [aimage extent];
    

    然后尝试。

    【讨论】:

    • extent 包含输出图像大小,这意味着我的输出图像没有使用过滤器正确创建
    • 我想我是对的。你应该使用[aimage extent] 而不是[result extent]
    • 其实我也试过CIGaussianBlur[result extent] 不正确,即使你也可以用默认值测试它。不要填写任何内容,只需尝试使用默认值然后查看。
    • 最后我想要输出图像矩形而不是输入图像矩形
    • 我可以知道那是什么吗? @Leena
    猜你喜欢
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多