0

回転したグレースケール画像で「テクスチャ」画像をマスクする必要があります。

CGImagesまたはCGlayersを使用する必要があることがわかりました ( UIImageViewsのみを使用する簡単な方法がある場合は、お知らせください)。

私の問題は簡単です:

回転変換された CGのアンチエイリアスは静かで ギザギザです ...

...しかし、回転変換された UIImageView のアンチエイリアスは完璧です。アンチエイリアス処理された美しい回転を生成するにはどうすればよいですか?

私が何を話しているかを確認するために、実際の iPhone シミュレーターのスクリーンショットを含む「証明」をアップロードしました: http://gotoandplay.freeblog.hu/files/Proof.png

renderInContextで「キャプチャ」されたCGImagesCGLayersUIImageViewsを使用しようとしました。 CGContextSetInterpolationQualityを高くしようとしまし

来年は OpenGL を使って学習する予定ですが、この開発は CoreGraphics のみを使用してリリースする必要があります。完全にレンダリングされた回転した画像を取得する方法を教えてください。それが不可能であることは受け入れられません。

4

3 に答える 3

1

画像に 1px の透明な境界線を追加するには、これを使用します

CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
UIGraphicsBeginImageContext( imageRect.size ); 
[image drawInRect:CGRectMake(1,1,image.size.width-2,image.size.height-2)];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2011-02-20T14:05:58.080 に答える
0

画像の周りに明確な 1 ピクセルの境界線を追加してみましたか? エッジをブレンドするときに CoreGraphics に作業する余地を与えることで、エイリアシングを回避するためのトリックとして推奨されていると聞いたことがあります。

于 2009-12-28T08:06:47.160 に答える
0

私は同様の問題を抱えています.OpenGL ESにも移行する予定です. パフォーマンスを損なわない効果的な解決策を突き止めることはできません。

将来の CoreGraphics エクスプローラーの参考として、1 ピクセルの透明な境界線を配置すると、私の実験では顕著な改善が見られましたが、Eonil が述べたように、アンチエイリアシング/スムージング/補間の複数の段階が相互に作用することになるようです。IE: CGLayer は、その回転に対して何らかの補間を行い、次に、それが描画されているコンテキストが何らかの補間/アンチエイリアシングを行います。

実際には、目的のコンテキストで補間とアンチエイリアシングを無効にすることで、より良い結果が得られましたが、それでも明らかにジャギーでした (ただし、全体的にアーティファクトは少なくなりました)。CGLayer を構築するときに補間とアンチエイリアシングを有効にし、再描画するときに目的のコンテキストに対して無効にすることで、全体的な外観を最適化することができました。このアプローチは、明らかに、他の問題をはらんでいます。

于 2012-06-18T23:06:51.530 に答える