1

私はしばらくこの答えを探していました。しかし、私はそれを見つけることができませんでした。

30 個の UIimages のピクセルを平均したいと思います。そのためには、すべての画像のすべてのピクセルを調べるのではなく、Quartz2D を使用して実行したいと考えています。30 枚の画像を一緒にペイントするには、それぞれのアルファ チャネルを 1/30 に調整する必要があることに気づきました。次に、一方を他方の上にペイントすると、目的の効果が得られます。

必要な数式は次のようになります: Dest Px = (img[0].px+....img[29].px)/30

私は imageContext を使用してそれを達成しようとしましたが、画像をうまくブレンドすることはできませんでした:

UIGraphicsBeginImageContext(CGSizeMake(sz.width, sz.height));

for (int i=0; i<30; i++) {

    UIImage* img = [self.delegate requestImage:self at:i];

    CGPoint coord = [self.delegate requestTranslation:self at:i];

    [img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30];

}

UIImage* im = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

多くの UIimages の平均画像を取得するにはどうすればよいですか? また、多くのサブレイヤーを含む画像を追加しようとしましたが、画像が色あせてしまいます。

ありがとう!

4

1 に答える 1

1

以下を変更してみてください。

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1/30];

[img drawAtPoint:coord blendMode:kCGBlendModeNormal alpha:1.0/30.0];

1/30 (整数値を使用) == 0 なので、画像は完全に透明になります。を追加することで.0、 が必要であることを明確にしますCGFloat

于 2011-10-30T22:57:25.577 に答える