だから私は画像からアルファチャンネルを削除しようとしています。CIColorMatrix を試してみようと思いました。さて、これが問題です。 filter
以前に (正常に) 適用されたフィルターです。次のコードは、あなたが思うように動作します:
ciImage = [filter valueForKey:kCIOutputImageKey];
filter = [CIFilter filterWithName:@"CIColorMatrix"];
[filter setValue:ciImage forKey:kCIInputImageKey];
[filter setValue:[CIVector vectorWithX:1 Y:0 Z:0 W:0] forKey:@"inputRVector"];
[filter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.75] forKey:@"inputAVector"];
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.0] forKey:@"inputBiasVector"];
image = [UIImage imageWithCIImage:[filter valueForKey:kCIOutputImageKey]];
アルファに 0.75 を掛けます。ただし、アルファ バイアスを 0.01 程度に変更すると、次のようになります。
[filter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0.01] forKey:@"inputBiasVector"];
結果として得られる CIImage にはextent
、およそ などの途方もない があり(-1.7e38, -1.7e38), (3.4e38 x 3.4e38)
ます。実際の画像が正しいかどうかを確認するために再配置しようとはしていません。
なぜこれが起こるのか、そしてそれを修正する方法を知っている人はいますか?