0

为今天这么多问题道歉,周五脑死症状开始了。

我有一个 CICrop 过滤器:

[crop setValue:beginImage forKey:@"inputImage"];  //give the crop filter the beginImage
    [crop setValue:[CIVector vectorWithX:0.0f Y:0.0f Z:_exportSize W:_exportSize] forKey:@"inputRectangle"];  //give the filter the size to crop to
    croppedImage = [crop valueForKey:@"outputImage"];  //set the output image, note it's still a CIImage at this point

可悲的是,它不起作用。它裁剪的图像最终为 0x0 像素。_exportSize(它是一个 CGFloat)的快速 NSLog 显示它是 1024,但日志显示图像裁剪后是 0x0。我不知道为什么。

这段代码以前有效。我认为唯一的区别是我曾经裁剪 UIImage 而不裁剪 CIImages。我宁愿不必转换,因为我计划在裁剪后做其他 CoreImage 的东西。

正如我所说,_exportSize 是 CGFloat _exportSize; 并记录它显示它 1024.0000。

有任何想法吗?

干杯。

4

2 回答 2

2

最后,我放弃了使用 Core Image 进行裁剪,而是使用了它:

    -(UIImage *)imageByCropping:(UIImage *)imageToCrop toRect:(CGRect)rect
{
    CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect);

    UIImage *cropped = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);

    return cropped;
}
于 2012-05-12T15:06:54.920 回答
0

尝试

[crop setValue:[CIVector vectorWithX:0.0f Y:0.0f Z:_exportSize.width W:_exportSize.height] forKey:@"inputRectangle"];

代替

[crop setValue:[CIVector vectorWithX:0.0f Y:0.0f Z:_exportSize W:_exportSize] forKey:@"inputRectangle"];

帮助网址http://gigliwood.com/weblog/Cocoa/Core_Image,_part_2.html

Z 应该是宽度
W 应该是高度

希望能帮助到你。

于 2012-05-11T15:33:29.080 回答