Sunday, November 30, 2008

librsvgを使用して画像の端を暗くする

librsvgを使用して画像の端を暗くするには、以下のSVGファイルを処理します。

edge-darkening.svg

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="200" height="200">

<defs>
<!-- 端が透明なマスク -->
<g id="maskimage"
x="0" y="0" width="200" height="200">
<rect x="0" y="0" width="200" height="200" fill="#ffffff"/>
</g>
<!-- 黒背景 -->
<g id="bg">
<rect x="0" y="0" width="200" height="200" fill="#000000" />
</g>
<filter id="edf">
<!-- マスクイメージをぼかす -->
<feImage xlink:href="#maskimage" result="maskimage"/>
<feGaussianBlur in="maskimage" stdDeviation="8" result="blurred"/>
<!-- マスクイメージを使用して切り取り -->
<feComposite in="SourceGraphic" in2="blurred" operator="in" result="iwt"/>
<!-- 半透明画像と黒背景を重ね合わせ -->
<feImage xlink:href="#bg" result="bg"/>
<feComposite in="iwt" in2="bg" operator="over" />
</filter>
</defs>

<image x="0" y="0" width="200" height="200"
xlink:href="sf.jpg" filter="url(#edf)">
<title>sf.jpg</title>
</image>
</svg>

コマンド
rsvg-convert edge-darkening.svg -f png -o sample698.png

元画像(sf.jpg)


出力画像(sample698.png)


関連項目
librsvgを使用して画像の端をぼかす
librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)

No comments: