1

iOSアプリケーションで使用したいSVG画像がいくつかあります。つまり、SVG画像をUIImages(またはCGImages)に変換したいと思います。

私の目標は、ファイルから任意のサイズ(正しいW / H比を想定)で画像をロードし、画質を損なうことなく保存.svgできるようにすることです。(これはすべて実行時に行われる必要があることに注意してください。画像をさまざまなサイズのファイルに事前変換して、AppBundleに入れることは実行可能なオプションではありません。)UIImagesCGImages.png

これは可能ですか?もしそうなら、どうすればこれを行うことができますか?私は実用的な知識を持っていCore Graphicsますが、これまでベクターグラフィックスを扱ったことがありません。

4

2 に答える 2

1

SVGKitはあなたを助けることができます - このライブラリは SVG をCALayerインスタンスにレンダリングします。そこから、イメージをビットマップに簡単に合成して、CGImage を作成できます。

于 2012-11-07T05:48:58.020 に答える
1

ほとんどの場合、ベクトル化されたドキュメントをビットマップに変換することはお勧めしませんが、 SVGghには、UIImage を作成するメソッド -(UIImage*)asImageWithSize:(CGSize)maximumSize andScale:(CGFloat)scale を持つクラス SVGRenderer があります。 .

これは、SVGgh が SVG を適切にレンダリングすることを前提としています。たとえば、画像効果はサポートされていません。

 #import <SVGgh/SVGgh.h>
-(UIImage) imageFromSVGURL:(NSURL*)svgURL withSize:(CGSize)maximumSize andScale:(CGFloat)scale
{
    SVGRenderer* renderer = [[SVGRenderer alloc] initWithContentsOfURL:svgURL];
    return [renderer asImageWithSize:maximumSize andScale:scale];
}
于 2015-07-14T11:45:30.183 に答える