0

画像処理コードを高速化しようとしています。私が試みていた要因の 1 つは、次のように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 色空間を使用してロードしようとしましたが、役に立ちませんでした。質問:

  • なぜこれが起こっているのか誰か知っていますか?
  • 直接ロードすることで得られるものがあるかどうか、誰かが知っているでしょうか?CIImage
4

1 に答える 1

0

CGImage最後に、最初の解決策では画像の読み込みが高速化されないことを知るのに十分なほど傾いてきました。[UIImage imageWithContentsOfFile:pathForResource]非常に高速で、UIImage.CGImage目に見えるパフォーマンス コストはまったくありません。

于 2014-07-18T06:45:12.440 に答える