CoreImage CICrop返回0x0像素图像

时间:2012-05-11 14:28:15

标签: ios crop cgimage core-image

为今天这么多问题道歉,星期五死脑症状设定。

我有一个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的快速NSLog(它是一个CGFloat)显示它是1024,但是日志显示图像后期裁剪为0x0。我无法理解为什么。

此代码之前有效。我认为,唯一的区别是我曾经用UIImage裁剪没有CIImages。我宁愿不必转换,因为我计划在裁剪之后做其他CoreImage。

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

有什么想法吗?

干杯。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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应该是高度

希望它有所帮助。