13

画像を拡大縮小して変更し、別の画像形式に出力しようとしています。これまで、 Apache Batikライブラリを使用してきました。単純な変換の場合、これは簡単です。svg のクリッピングについては、これは簡単です。

ただし、svg によって作成された完全なイメージにスケーリングする方法がわかりません。つまり、対象領域を外接する四角形として指定すると、外接する四角形でスケーリングが機能しますが、svg の画像をスケーリングする方法がわかりません。

これは私がこれまでに持っているものです:

...
//set the output width and height  
transcoder.addTranscodingHint( PNGTranscoder.KEY_WIDTH, new Float( newSize.width ) );
transcoder.addTranscodingHint( PNGTranscoder.KEY_HEIGHT, new Float( newSize.height ) );

//set the aoi for scaling. Unsure what to do here.
transcoder.addTranscodingHint( PNGTranscoder.KEY_AOI, new Rectangle( 0, 0, 100, 100 ) );
...
4

1 に答える 1

8

KEY_AOI トランスコーディング ヒントを設定しない場合、ルート要素のviewBox=""属性を使用して対象領域が決定されます。<svg>トランスコードするドキュメントにviewBox=""属性がない場合、width=""およびheight=""属性が使用されるため、AOI は (0, 0, width, height) になります。

これらのいずれも設定されておらず、グラフィックスがドキュメントの座標系内のどこにあるかが事前にわからない場合は、ルート<svg>要素のバウンディング ボックスを計算し、それを AOI として使用できます。これを行うには、最初にドキュメントの「DOM を起動」getBBox()し、次にドキュメント要素を呼び出します。

于 2010-02-13T01:38:14.987 に答える