3

100x100 の画像があるとします。画像を 500x500 の大きなキャンバス サイズに配置したいと考えています。

私の現在のアプローチは、UIGraphics を使用してコンテキストを作成し、そのコンテキストに画像を描画することです。

UIGraphics.BeginImageContext(....);
ImageView.Draw (....);

それはうまくいきますが、私がやっていることに対して私が望むほど速くはありません. CIFilters が非常に高速であることに気付きました。 CIFilters、または CPU ではなく GPU を使用する別の方法を使用して、より大きなキャンバス サイズに画像を配置する方法はありますか? CIFilters CICrop と CIPerspectiveTransform を試してみましたが、期待した結果が得られないようです...

ここに画像の説明を入力
元の画像 100x100

ここに画像の説明を入力

500x500の私の望ましい結果画像。CIFiltersまたはGPU操作を使用して、画像を取得してキャンバスサイズを大きくしたいだけです。

CICrop を使用して「逆トリミング」を試みましたが、うまくいきませんでした。画像自体が 100x100 であっても、CIVector のサイズを 500x500 に指定したことに注意してください。結果の画像はその余分なスペースを完全に無視し、オフの場合はカットします。これが私のコードです:

        CICrop crop = new CICrop();
        crop.Image = ImageView.Image.CGImage;
        crop.Rectangle = new CIVector(0, 0, 500, 500);
        ImageView.Image = new UIImage(crop.OutputImage);
        Console.WriteLine("ImageView.Image.size = "+ ImageView.Image.Size);
4

1 に答える 1