Showing posts with label 修飾. Show all posts
Showing posts with label 修飾. Show all posts

Friday, May 22, 2009

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>sample1096(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 枠の幅 */
$padx = 10;
$pady = 10;
$im = new Imagick("sf.jpg");
/* ストライプを作成 */
$idraw = new ImagickDraw();
$idraw->pushPattern('tile', 0, 0, 20, 20);
$idraw->setFillColor("white");
$idraw->rectangle(0,0,19,9);
$idraw->setFillColor("#99aaff");
$idraw->rectangle(0,10,19,19);
$idraw->popPattern();

/* タイルパターンにして配置 */
$idraw->setFillPatternURL('#tile');
$im2 = new Imagick();
$im2->newPseudoImage($im->getImageWidth()+$padx*2,
$im->getImageHeight()+$pady*2, "xc:none");
$idraw->rectangle(0, 0, $im->getImageWidth()+$padx*2,
$im->getImageHeight()+$pady*2);
$im2->drawImage($idraw);

/* ストライプを回転 */
$im2->setImageVirtualPixelMethod(
Imagick::VIRTUALPIXELMETHOD_TILE);
$points = array(60);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE,
// $points, false);
// ScaleRotateTranslateDistortion in distort.h
$im2->distortImage(3, $points, false);

$im2->compositeImage($im, Imagick::COMPOSITE_OVER,
$padx, $pady,
Imagick::CHANNEL_ALL);

$im2->writeImage('sample1096a.png');
$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1096a.png" />
</body>
</html>


元画像(sf.jpg)


出力画像(sample1096a.png)
Imagickでストライプ枠をつけた画像

関連項目
ImageMagickとPHPで画像に3D枠をつける
ImageMagickとPHPで立体的な角丸四角の枠をつける
ImageMagickとPHPで画像に半透明ガラスの枠をつける
ImageMagickとPHPで、画像に半透明角丸四角の枠をつける
ImageMagickとPHPで、画像に枠をつける (シンプルな単色枠)
ImageMagickで画像にストライプ枠をつける (convertコマンドによる同様の処理)

Tuesday, May 05, 2009

ImageMagickとPHPで画像に3D枠をつける

ImageMagickとPHPで画像に3D枠をつけるには、以下のコードを実行します。


<!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>sample1103(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$im->raiseImage(10,10,10,0,true);
$im->writeImage('sample1103a.png');

$im->destroy();
?>
<img src="sample1103a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample1103a.png)
Imagickで3D枠をつけた画像

関連項目
WindowsでImageMagickをPHPから使用するための設定

Saturday, April 04, 2009

ImageMagickで、画像を暗くしてぼんやりと光のあたったプレートに加工する

ImageMagickで、画像を暗くしてぼんやりと光のあたったプレートに加工するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16

%im%\convert.exe -size 200x200 sf.jpg -evaluate multiply 0.5 ( -size 200x200 radial-gradient:#ffffff60-#ffffff00 -chop 40x70 -background none -extent 200x200+0+0 -channel rgba -blur 0x5 ) -composite ( -size 200x200 gradient:#d0d0d0d0-#000000d0 -distort SRT -35 -fx "i==0||i==w-1||j==0||j==h-1?p:0" ) -composite sample913a.png

rem 黒背景と重ね合わせ
%im%\convert.exe -size 220x220 xc:black -gravity center sample913a.png -composite sample913b.png

上記バッチの最初のconvertコマンドでは、以下の処理をしています。
1. -evaluate multiply 0.5で画像を暗くしています。
2. radial-gradientで放射グラデーションの明かりを作成して、-chopで位置をずらし、再度-extentでサイズ調整をして、-blurでぼかします。
3. gradientでグラデーションを作成して-distort SRT -35でグラデーションを傾け、-fxで画像の上下左右1ピクセルを残して枠を作成します。

元画像(sf.jpg)


出力画像1(sample913a.png)
ImageMagickで光のあたったプレートに加工した画像

出力画像2(sample913b.png)
加工したプレートと黒背景を重ね合わせた画像

Wednesday, February 18, 2009

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>sample887(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 立体的な角丸四角の枠をつける */
/* 余白 */
$padx = 10;
$pady = 10;
/* 角丸 */
$rx = 20;
$ry = 20;
/* 線の太さ */
$sw = 8;

$im = new Imagick("sf.jpg");
/* 枠部分を作成 */
$im2 = new Imagick();
$im2->newPseudoImage(
$im->getImageWidth(), $im->getImageHeight(), "xc:none");

$idraw = new ImagickDraw();
$idraw->setFillColor("none");
$idraw->setStrokeColor("white");
$idraw->setStrokeWidth($sw);
$idraw->roundrectangle($padx,$pady,
$im->getImageWidth()-$padx-1, $im->getImageHeight()-$pady-1,
$rx, $ry);
$im2->drawImage($idraw);

$im3 = $im2->clone();
$im3->blurImage(0,3,Imagick::CHANNEL_RED + Imagick::CHANNEL_GREEN
+ Imagick::CHANNEL_BLUE);
$im3->shadeImage(false, 135, 23);
$im2->compositeImage($im3, Imagick::COMPOSITE_HARDLIGHT, 0, 0);

/* 角丸四角で切り取り */
$im4 = new Imagick();
$im4->newPseudoImage(
$im->getImageWidth(), $im->getImageHeight(), "xc:none");
$idraw2 = new ImagickDraw();
$idraw2->setFillColor("white");
$idraw2->setStrokeColor("white");
$idraw2->setStrokeWidth($sw);
$idraw2->roundrectangle($padx,$pady,
$im->getImageWidth()-$padx-1, $im->getImageHeight()-$pady-1,
$rx, $ry);
$im4->drawImage($idraw2);
$im4->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);

$im4->compositeImage($im2, Imagick::COMPOSITE_DEFAULT,
0, 0, Imagick::CHANNEL_ALL);

$im4->writeImage('sample887a.png');
$idraw2->destroy();
$idraw->destroy();
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample887a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample887a.png)


関連項目
ImageMagickで画像に立体的な角丸四角の枠をつける

Sunday, February 08, 2009

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>sample770(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* ImageMagickとPHPで凹んだ影付き角丸四角を描画する */
/* 余白 */
$padx = 10;
$pady = 10;
/* 角丸半径 */
$rx = 20;
$ry = 20;

$im = new Imagick("sf.jpg");
$im2 = new Imagick();
$im2->newPseudoImage(
$im->getImageWidth(), $im->getImageHeight(),
"xc:white");
/* 白黒で角丸四角を描画 */
$idraw = new ImagickDraw();
$idraw->setFillColor("#000000");
$idraw->roundrectangle($padx,$pady,
$im->getImageWidth()-$padx-1,
$im->getImageHeight()-$pady-1, $rx, $ry);
$im2->drawImage($idraw);
/* redの値をalphaにして、青白い色をrgbに指定 */
$it = $im2->getPixelIterator();
foreach($it as $py => $line){
foreach($line as $px => $pixel){
$rv = $pixel->getColorValue(Imagick::COLOR_RED);
$pixel->setColorValue(Imagick::COLOR_RED, 0xe8/0xff);
$pixel->setColorValue(Imagick::COLOR_GREEN, 0xf0/0xff);
$pixel->setColorValue(Imagick::COLOR_BLUE, 0xf8/0xff);
$pixel->setColorValue(Imagick::COLOR_ALPHA, $rv);
}
$it->syncIterator();
}

/* 影つけ */
$im3=$im2->clone();
$im3->setImageBackgroundColor('black');
$im3->shadowImage(70,3,5,5);

/* 重ね合わせ */
$im->addImage($im3);
$im->addImage($im2);
$im4=$im->mosaicImages();

/* 切り取り */
$im4->cropImage($im->getImageWidth(),
$im->getImageHeight(), 0, 0);

$im4->writeImage('sample770a.png');
$idraw->destroy();
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample770a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample770a.png)


関連項目
ImageMagickで凹んだ影付き角丸四角を描画する (convertコマンドによる同様の処理)

Monday, January 26, 2009

RMagickで画像を文字列つきのポラロイド写真風にする

RMagickで画像を文字列つきのポラロイド写真風にするには、以下のコードを実行します。



require 'RMagick'
include Magick

images = ImageList.new("sf.jpg")
images[0]["caption"] = "サンフランシスコ"
img2 = images[0].polaroid(5){
# 環境によってパスを変えてね
self.font = "c:\\winnt\\fonts\\msgothic.ttc"
self.pointsize = 20
self.gravity = SouthGravity
# 文字列の色
self.fill = "#787070"
# 枠の色
self.border_color = "#f8f8ff"
# 文字の背景
self.undercolor = "none"
# 影の色
self.shadow_color = "#202020"
}
img3 = Image.new(img2.columns, img2.rows){
self.background_color = "#f0f0f3"
}
img4 = img3.composite(img2, CenterGravity, 0, 0, OverCompositeOp);

img4.write("sample758a.png")

exit


元画像(sf.jpg)


出力画像(sample758a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickでアニメーションGIFを作成する
RMagickでパスを使用して左上と右下が丸くなった四角を描画する

Thursday, January 01, 2009

groovyで画像に編み目模様をつける

groovyで画像に編み目模様をつけるには、以下のコードを実行します。

import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample852a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf.jpg' )
filters {
weave(xWidth:12, yWidth:12, xGap:4, yGap:4)
}
}
}


出力画像(sample852a.png)


動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11

関連項目
groovyで画像を2値化する
groovyで画像をシャープにする
groovyで画像に水面の波紋のような効果をかける
groovyで画像に編み目模様をつける
groovyで画像に放射ブラーをかける

Tuesday, December 30, 2008

JMagickで画像の端がかすれたような処理をする

JMagickで画像の端がかすれたような処理をするには、以下のコードを実行します。


import java.awt.*;
import magick.*;

public class JMagickTest45
{
public static void main(String args[])
throws MagickException
{
/* 画像の端をかすれたように処理する */
MagickImage mi = new MagickImage(new ImageInfo("sf2.jpg"));
int w = (int)mi.getDimension().getWidth();
int h = (int)mi.getDimension().getHeight();
// マスク作成
ImageInfo ii = new ImageInfo("xc:none");
ii.setSize(w + "x" + h);
MagickImage mi2 = new MagickImage(ii);
DrawInfo di = new DrawInfo(ii);
di.setFill(new PixelPacket(0xff*256, 0xff*256, 0xff*256, 0));
di.setPrimitive("rectangle 10, 10, 289, 214");
mi2.drawImage(di);
mi2 = mi2.spreadImage(3);
// 切り取り
mi2.compositeImage(CompositeOperator.SrcInCompositeOp,mi,0,0);
// 白背景作成
ImageInfo ii2 = new ImageInfo("xc:white");
ii2.setSize(w + "x" + h);
MagickImage mi3 = new MagickImage(ii2);
mi3.compositeImage(CompositeOperator.OverCompositeOp,mi2,0,0);

mi3.setFileName("sample726a.jpg");
mi3.writeImage(new ImageInfo());
}
}


元画像(sf2.jpg)


出力画像(sample726a.jpg)


関連情報
JMagickまとめ
ImageMagickで、画像の端をかすれたように処理する
ImageMagickでクレヨン風の文字列を描画する

Sunday, December 14, 2008

ImageMagickで画像に立体的な角丸四角の枠をつける

ImageMagickで画像に立体的な角丸四角の枠をつけるには、以下のコードを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16

%im%\convert.exe -size 200x200 xc:none -stroke white -strokewidth 8 -fill none -draw "roundrectangle 10,10,190,190,10,10" ( +clone -blur 0x3 -shade 135x23 ) -compose hard-light -composite ( -size 200x200 xc:none -stroke white -strokewidth 8 -fill white -draw "roundrectangle 10,10,190,190,10,10" -matte -channel rgba sf.jpg -compose src_in -composite ) -swap 0,1 -compose src-over -composite sample712a.png

元画像(sf.jpg)


出力画像(sample712a.png)


関連項目
ImageMagickで、画像に半透明角丸四角の枠をつける
ImageMagickで、縁取りつきの角丸四角で画像を切り取る
ImageMagickで画像に立体的な枠をつける
ImageMagickで画像に半透明ガラス枠をつける
ImageMagickで画像にストライプ枠をつける

Wednesday, December 10, 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>sample707(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像に半透明ガラス枠をつける */
$dx = 15;
$dy = 15;

$im = new Imagick("sf.jpg");
$ox = $im->getImageWidth();
$oy = $im->getImageHeight();
/* 画像をリサイズ */
$im->resizeImage(
$ox+$dx*2, $oy+$dy*2,
imagick::FILTER_MITCHELL, 1, false);
/* ちょっと暗めに */
$im2 = $im->fxImage("p*0.8");
/* 黒色の枠をつける */
$im2->borderImage('#000000', $dx, $dy);

$idraw = new ImagickDraw();
/* 塗りつぶし色設定 */
$idraw->setFillColor('#ffffff');
$idraw->rectangle($dx*2, $dy*2,
$ox+$dx*2-1, $oy+$dy*2-1);
$im2->drawImage($idraw);
/* ぼかす */
$im2->blurImage(0,2);
/* 切り取り */
$im2->cropImage($ox+$dx*2, $oy+$dy*2, $dx, $dy);
/* 重ね合わせ */
$im3 = new Imagick("sf.jpg");
$im2->compositeImage($im3,
Imagick::COMPOSITE_DEFAULT, $dx, $dy);
$im2->writeImage('sample707a.png');

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

</body>
</html>

元画像(sf.jpg)


出力画像(sample707a.png)


関連項目
ImageMagickで画像に半透明ガラス枠をつける (Convertコマンドによる同様の処理)

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で使用する方法)
・libsvgに関する他の記事はこちらを参照してください。

Saturday, October 25, 2008

RMagickで画像の端を暗くする

RMagickで画像の端を暗くするには、以下のコードを実行します。

require 'RMagick'
include Magick

# 画像の端を暗くする
images = ImageList.new("sf.jpg")

# 画像外に黒を指定してぼかす
img1 = Image.new(images[0].columns, images[0].rows){
self.background_color = "none"
}
img1.alpha = ActivateAlphaChannel
img1.virtual_pixel_method = Magick::BlackVirtualPixelMethod
img2 = img1.blur_channel(0, 10, ChannelType::AllChannels)

img3 = images[0].composite(img2, CenterGravity, 0, 0, OverCompositeOp);
img3.write("sample657a.png")

exit

元画像(sf.jpg)


出力画像(sample657a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
RMagickをWindowsで使用するための設定

Monday, October 06, 2008

Rmagickで画像の端がかすれたように処理する

Rmagickで画像の端がかすれたように処理するには、以下のコードを実行します。

require 'RMagick'
include Magick

# 余白
px = 10
py = 10
# 画像読み込み
images = ImageList.new("sf2.jpg")
# マスク作成
mask = Image.new(images[0].columns, images[0].rows){
self.background_color = "none"
}
idr = Draw.new
idr.rectangle(px, py, images[0].columns-1-px, images[0].rows-1-px)
idr.draw(mask);
mask = mask.spread(2);

# マスクを利用して切り取り
img2 = mask.composite(images[0], 0, 0, SrcInCompositeOp)

# 背景用画像
bg = Image.new(images[0].columns, images[0].rows){
self.background_color = "white"
}
img3 = bg.composite(img2, CenterGravity, 0, 0, OverCompositeOp);
img3.write("sample643a.png")

exit

元画像(sf2.jpg)


出力画像()


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目

Sunday, September 21, 2008

Java2DとJava Image Filters(pixels)を使用して画像に折り目をつける

Java2DとJava Image Filters(pixels)を使用して画像に折り目をつけるには、以下のコードを実行します。

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;

public class Java2DTest36
{
public static void main(String args[])
throws Exception
{
/* 画像に折り目をつける */
BufferedImage img = ImageIO.read(new File("sf.jpg"));

CurlFilter cf = new CurlFilter();
cf.setTransition(0.10f);
cf.setAngle(210f/180f*ImageMath.PI);
cf.setRadius(4f);
BufferedImage img2 = cf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample567a.jpg"));
}
}

元画像(sf.jpg)


出力画像(sample567a.jpg)


関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html

Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/

java.netでのプロジェクトページ
https://pixels.dev.java.net/

Tuesday, August 12, 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>sample530(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像の周りを暗くする */
$im = new Imagick("sf.jpg");
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), 'none');
$im2->setImageBackgroundColor('#000000a0');
$im2->spliceImage(10, 10, $im->getImageWidth(), $im->getImageHeight());
$im2->spliceImage(10, 10, 0, 0);
$im2->blurImage(0, 10, Imagick::CHANNEL_ALL);
$im2->cropImage($im->getImageWidth(), $im->getImageHeight(), 10, 10);
$im->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im->writeImage('sample530a.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample530a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample530a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

Saturday, July 26, 2008

ImageMagickで画像をストライプ上にずらす

画像をストライプ上にずらすには、以下のコードを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.2-Q16

%im%\convert.exe sf.jpg -background white -gravity south -splice 0x4 -virtual-pixel background -fx "i%%16<8?p[0,-4]:p" sample513a.png

元画像(sf.jpg)


出力画像(sample513a.png)

Sunday, July 20, 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>sample506(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像の端をかすれたように処理する */
$im = new Imagick('sf2.jpg');

/* かすれた矩形領域のマスクを作成 */
$px = 10;
$py = 10;
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff');
$idraw->rectangle($px, $py, $im->getImageWidth()-$px, $im->getImageHeight()-$py);
$im2->drawImage($idraw);
$im2->spreadImage(2);
/* マスクを使用して切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

$im2->writeImage('sample506a.png');
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();?>

<img src="sample506a.png" />

</body>
</html>

元画像(sf2.jpg)


出力画像(sample506a.png)


動作環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickで、画像の端をかすれたように処理する (Convertコマンドによる同様の処理)
ImageMagickとPHPで文字列をクレヨン風に描画する

Thursday, July 10, 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>sample494(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像に網掛けする */
$im = new Imagick('sf.jpg');
$im2=$im->fxImage('i%2*j%2?p:p*0.7');
$im2->writeImage('sample494a.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample494a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample494a.jpg)


動作環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickで網掛けをする (convertコマンドでの同様の処理)

Sunday, July 06, 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>sample490(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像を文字付きポラロイド写真風にする */
$im = new Imagick("sf.jpg");
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('Bitstream-Vera-Sans');
/* フォントサイズ設定 */
$idraw->setFontSize(20);
/* gravity */
$idraw->setGravity(Imagick::GRAVITY_SOUTH);

/* 文字列描画 */
$im->setImageProperty("caption", "San Francisco");
$im->setImageBackgroundColor("black");
$im->polaroidImage($idraw, 5);

/* 真っ白な背景画像作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im2->addImage($im);
$im3 = $im2->flattenImages();

$im3->writeImage('sample490a.jpg');

/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im3->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im3->destroy();
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample490a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample490a.jpg)


動作環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickで、画像をポラロイド写真風にして、日本語文字列を描画する (Convertコマンドでの同様の処理)
ImageMagickとVBS(WSH)でポラロイド写真を並べた画像を生成する

Saturday, July 05, 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>sample489(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像の端を円形にぼかす */
$im = new Imagick("sf.jpg");
$im->vignetteImage(0, 1, 10, 10);
$im->writeImage('sample489a.jpg');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

/* 背景を水色に */
$im2 = new Imagick("sf.jpg");
$im2->setImageBackgroundColor("#bbddff");
$im2->vignetteImage(0, 1, 10, 10);
$im2->writeImage('sample489b.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();

?>

<img src="sample489a.jpg" />
<img src="sample489b.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像1(sample489a.jpg)


出力画像(sample489b.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickとPHPで、画像を丸く切り取る
ImageMagickで円形に端をぼかす (Convertコマンドによる同様の処理)