Saturday, November 08, 2008

librsvgで画像を点光源で照らす

librsvgで画像を点光源で照らすには、以下のsvgファイルを処理します。
pointlight.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>
<filter id="plf">
<feSpecularLighting in="SourceGraphic" result="lr" specularExponent="20" lighting-color="#ffffff">
<fePointLight x="70" y="70" z="30"/>
</feSpecularLighting>
<feSpecularLighting in="SourceGraphic" result="l2r" specularExponent="15" lighting-color="#aaccff">
<fePointLight x="180" y="170" z="25"/>
</feSpecularLighting>
<feComposite in="SourceGraphic" in2="lr" result="t1" operator = "arithmetic" k1 = "0" k2 = "1" k3 = "0.5" k4 = "0"/>
<feComposite in="t1" in2="l2r" operator = "arithmetic" k1 = "0" k2 = "1" k3 = "1" k4 = "0"/>
</filter>
</defs>

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

コマンド
rsvg-convert pointlight.svg -f png -o sample691.png

元画像(sf.jpg)


出力画像(sample691.png)


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

GMICを使用してメディアンフィルタを画像にかける

GMICを使用してメディアンフィルタを画像にかけるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
%gmic%\gmic.exe sf.jpg -median 5 -o sample615a.png

元画像(sf.jpg)


出力画像(sample615a.png)


関連項目
G'MICのホームページ

Friday, November 07, 2008

ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにする

ImageMagickとPHPで画像上に描画した文字列以外の部分をグレースケールにするには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample663(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像に文字を描画して、文字以外のところを白黒にする */
$im = new Imagick('sf.jpg');

$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), 'none');
$im2->setImageMatte(true);
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Tahoma-Bold');
/* フォントサイズ設定 */
$idraw->setFontSize(28);
/* 塗りつぶし色設定 */
$idraw->setFillColor('white');
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$idraw->setStrokeAntialias(false);
$im2->annotateImage($idraw, 0, -40, 0, "San Francisco");
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

/* 白黒画像 */
$im3 = new Imagick('sf.jpg');
$im3->setImageColorspace(Imagick::COLORSPACE_GRAY);

$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0, Imagick::CHANNEL_ALL);
$im3->writeImage('sample663a.png');

$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample663a.png" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample663a.png)


関連項目
ImageMagickとPHPで、画像に日本語の文字列を描画する

GMICを使用して画像を拡張させる

GMICを使用して画像を拡張させるには、以下のバッチファイルのように-dialateオプションを使用します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
%gmic%\gmic.exe sf.jpg -dilate 3 -o sample614a.png

元画像(sf.jpg)


出力画像(sample614a.png)


関連項目
G'MICのホームページ

Thursday, November 06, 2008

librsvgを使用して影付き文字列を描画する

librsvgを使用して影付き文字列を描画するには、以下のSVGファイルを処理します。

text-and-dropshadow.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="220" height="220">

<defs>
<filter id="gbf" filterUnits="userSpaceOnUse" x="0" y="0" width="220" height="50" >
<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="shadow"/>
<feOffset in="shadow" dx="4" dy="4" result="shadow2"/>
<feComposite in="SourceGraphic" in2="shadow2" operator="over"/>
</filter>
</defs>

<image x="20" y="20" width="200" height="200"
xlink:href="sf.jpg" >
<title>sf.jpg</title>
</image>
<text x="10" y="30" font-family="Arial" font-size="30"
style="fill:#fffff8; stroke:#fffff8;" filter="url(#gbf)">San Francisco
</text>
</svg>


コマンド
rsvg-convert text-and-dropshadow.svg -f png -o sample690.png

元画像(sf.jpg)


出力画像(sample690.png)



関連項目
librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
librsvgを使用して画像を角丸四角に切り取り影付けする

GMICを使用して画像をぼかす

GMICを使用して画像をぼかすには、以下のバッチファイルのように-blurオプションを使用します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
%gmic%\gmic.exe sf.jpg -blur 1 -o sample613a.png
%gmic%\gmic.exe sf.jpg -blur 5 -o sample613b.png

元画像(sf.jpg)


出力画像(sample613a.png)


出力画像(sample613b.png)

関連項目
G'MICのホームページ

Wednesday, November 05, 2008

librsvgを使用して画像を角丸四角に切り取り影付けする

librsvgを使用して画像を角丸四角に切り取り影付けするには、以下のsvgファイルを処理します。
masked-image-dropshadow.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="300" height="300">

<defs>
<mask id="mask1" maskUnits="userSpaceOnUse"
x="0" y="0" width="300" height="300">
<rect x="50" y="50" width="200" height="200"
rx="20" ry="20"
style="fill:#ffffff; "/>
</mask>
<filter id="gbf">
<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="shadow"/>
<feOffset in="shadow" dx="4" dy="4" result="shadow2"/>
<feComposite in="SourceGraphic" in2="shadow2" operator="over"/>
</filter>
</defs>

<g filter="url(#gbf)">
<image x="50" y="50" width="200px" height="200px"
xlink:href="sf.jpg" mask="url(#mask1)" >
<title>sf.jpg</title>
</image>
</g>
<!--mask="url(#mask1)" -->
</svg>

コマンド
rsvg-convert masked-image-dropshadow.svg -f png -o sample689.png

元画像(sf.jpg)


出力画像(sample689.png)

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

GMICを使用して画像を連結する

GMICを使用して画像を連結するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
rem 水平方向に連結
%gmic%\gmic.exe sample3b.jpg sample6.jpg -append x -o sample612a.png
rem 垂直方向に連結
%gmic%\gmic.exe sample3b.jpg sample6.jpg -append y -o sample612b.png

元画像1(sample612a.png)


元画像2(sample6.jpg)


出力画像1(sample612a.png)


出力画像2(sample612b.png)


関連項目
G'MICのホームページ

Tuesday, November 04, 2008

GMICを使用して画像を回転させる

GMICを使用して画像を回転させるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
%gmic%\gmic.exe sf.jpg -rotate 45,0 -o sample611a.png
%gmic%\gmic.exe sf.jpg -rotate 45,1 -o sample611b.png

元画像(sf.jpg)



出力画像(sample611a.png)


出力画像(sample611b.png) : なんかdocumentだと1はnearestになっているが?


関連項目
G'MICのホームページ

Python Imaging Libraryで任意の色・サイズの背景画像を作成する

PILで任意の色・サイズの背景画像を作成するには、以下のコードを実行します。

# coding=UTF-8
import Image
# 任意の色・サイズの背景画像を作成する
img1 = Image.new("RGB", (100,100), (0xbb, 0xdd, 0xff))
img1.save("sample627a.jpg")

出力画像(sample627a.jpg)


関連情報
Python Imaging Libraryまとめ

Monday, November 03, 2008

ImageMagickとPHPで青白く輝く文字列を描画する

Imagickで青白く輝く文字列を描画するには、以下のコードを実行します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr">
<head>
<title>sample662(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* ぼんやりと青白く輝く文字列を描画する */
$im = new Imagick();
$im->newImage(300, 100, 'none');
$im->setImageMatte(true);
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Times-New-Roman-Bold');
/* フォントサイズ設定 */
$idraw->setFontSize(48);
/* 塗りつぶし色設定 */
$idraw->setFillColor('white');
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
$idraw->setStrokeAntialias(false);
$im->annotateImage($idraw, 0, 0, 0, "ImageMagick");
$im->blurImage(0, 2, Imagick::CHANNEL_ALPHA);
$im->normalizeImage();

$im2 = new Imagick();
$im2->newImage(300, 100, 'none');
$im2->setImageMatte(true);
$idraw2 = new ImagickDraw();
/* フォント設定 */
$idraw2->setFont('Times-New-Roman-Bold');
/* フォントサイズ設定 */
$idraw2->setFontSize(48);
/* 塗りつぶし色設定 */
$idraw2->setFillColor('#1F77D2');
$idraw2->setStrokeColor('#1F77D2');
$idraw2->setStrokeWidth(2);
/* gravity設定 */
$idraw2->setGravity(Imagick::GRAVITY_CENTER);
$im2->annotateImage($idraw2, 0, 0, 0, "ImageMagick");
$im2->blurImage(0, 5, Imagick::CHANNEL_ALL);
$idraw2->setStrokeWidth(1);
$im2->annotateImage($idraw2, 0, 0, 0, "ImageMagick");

$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im2->writeImage('sample662a.png');

/* 黒背景 */
$im3 = new Imagick();
$im3->newImage(300, 100, 'black');
$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im3->writeImage('sample662b.png');

$idraw2->destroy();
$idraw->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample662a.png" />
<img src="sample662b.png" />

</body>
</html>

出力画像1(sample662a.png):透過PNG


出力画像2(sample662b.png):黒背景との重ね合わせ


関連項目
ImageMagickとPHPで半透明のぼけた矩形の上に文字列を描画する
ImageMagickとPHPで半透明のぼかし文字列を描画する

GMICを使用して画像を切り取る

GMICを使用して画像を切り取るには、以下のバッチファイルのように-cropオプションに左上・右下の座標を指定して切り取ります。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
%gmic%\gmic.exe sf.jpg -crop 100,100,199,199 -o sample610a.png

元画像(sf.jpg)


出力画像(sample610a.png)


関連項目
G'MICのホームページ
http://gmic.sourceforge.net/

Sunday, November 02, 2008

GMICを使用して画像をリサイズする

GMICを使用して画像をリサイズするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8
rem 縦横50%に縮小
%gmic%\gmic.exe sf.jpg -resize 50%%x50%% -o sample609a.png
rem 縦を50%に縮小
%gmic%\gmic.exe sf.jpg -resize 100%%x50%% -o sample609b.png

元画像(sf.jpg)


出力画像(sample609a.png)


出力画像(sample609b.png)


関連項目
G'MICのホームページ
http://gmic.sourceforge.net/