2010-11-20 2 views
1

私は2回(静的な)画像を数秒間に合成しています。このコードは、3G上では非常にうまく実行され、iPhone4では本当にゆっくりと実行されます。 TimeProfilerは、UIImage drawAtPointへの呼び出しが、 "argb_sample_RGBA21"という非常に高価なものを呼び出すことを示しています。このルーチンは3G上で決して呼び出されません。静的イメージで一度実行できるバイトオーダー変換があるので、このバイトオーダー変換を保存しますか?それはCPUのみに実行され、グラフィックスハードウェアを利用していないためiPhone4でCoreGraphicsのパフォーマンスを向上させる

+ (UIImage *) createInterpolatedImageBetween: (UIImage *) imageA 
            andImage: (UIImage *) imageB 
            forValue: (float) fractionalValue { 

     UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0); 

     [imageA drawAtPoint: CGPointMake(0,0)]; 

     [imageB drawAtPoint: CGPointMake(0,0) 
       blendMode: kCGBlendModeNormal 
        alpha: fractionalValue]; 


     UIImage *answer = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return answer; 

}

+0

3GSよりもはるかに大きくなることができ、私はこれが理由だと思います。あなたが望むサイズの画像を処理していることを確認してください;) – nacho4d

答えて

0

コアグラフィックスは、本質的に低速です。同じページからのCICategoryCompositeOperationと任意に組み合わせたCISourceOverCompositingを使用すると、iOS 5以上をターゲットにしている場合にのみ、大幅なパフォーマンス向上が得られます。ここで

が良いコアイメージイントロです:iPhone4の画像で http://www.raywenderlich.com/5689/beginning-core-image-in-ios-5

関連する問題