0

我正在尝试加快我的图像处理代码。我尝试的一个因素是CIImage 直接创建一个,如下所示:

CIImage* ciImageStrong;
if (_cachedData)
{
    _cachedData = [NSData dataWithContentsOfFile:pathForResource];
    ciImageStrong = [CIImage imageWithData:_cachedData];
}
else
{
    ciImageStrong = [CIImage imageWithContentsOfURL:[NSURL fileURLWithPath:pathForResource]];
}

我的问题是,当将它与标准@"CISourceOverCompositing"滤镜一起使用时,所有图像都是以附加方式绘制,而不是普通的 alpha blend

当我使用以下代码时,一切正常:

UIImage* uiImageStrong;
if (_cachedData)
{
    _cachedData = [NSData dataWithContentsOfFile:pathForResource];
    uiImageStrong = [UIImage imageWithData:_cachedData];
}
else
{
    uiImageStrong = [UIImage imageWithContentsOfFile:pathForResource];
}
CIImage* ciImageStrong = [CIImage imageWithCGImage:uiImageStrong.CGImage];

我尝试使用 kCGColorSpaceModelRGB 颜色空间加载它,但无济于事。问题:

  • 有人知道为什么会这样吗?
  • 也许有人知道直接加载a是否有什么CIImage好处?
4

1 回答 1

0

最后,我已经足够CGImage了解第一个解决方案不会加快图像的加载速度。[UIImage imageWithContentsOfFile:pathForResource]速度非常快,UIImage.CGImage并且没有任何明显的性能成本。

于 2014-07-18T06:45:12.440 回答