RMagickで画像を黄色っぽくして端を暗くするには、以下のコードを実行します。
require 'RMagick'
include Magick
images1 = ImageList.new("sf.jpg")
img1 = images1.contrast(true)
# 端が暗い画像を作成
images2 = ImageList.new
images2.new_image(200, 200){
self.background_color = "none"
}
images2.alpha = ActivateAlphaChannel
images2.virtual_pixel_method = Magick::BlackVirtualPixelMethod
img2 = images2.blur_channel(0, 10, ChannelType::AllChannels)
# 元画像と重ね合わせ
img3 = img1.composite(img2, CenterGravity, 0, 0, OverCompositeOp);
# かすかにぼかしのかかった半透明の緑っぽい画像を作成
images3 = ImageList.new("sf.jpg")
images3.alpha = ActivateAlphaChannel
img = images3.fx("0.5", AlphaChannel)
img.rows.times { |py|
line = img.get_pixels(0, py, img.columns, 1)
line.size().times { |px|
line[px].red = line[px].red*209/255;
line[px].green = line[px].green*221/255;
line[px].blue = line[px].blue*48/255;
}
img.store_pixels(0, py, img.columns, 1, line)
}
img4 = img.blur_channel(0, 1, ChannelType::AllChannels)
img5 = img4.modulate(1.2, 1, 1);
# 端が暗くなった元画像と重ね合わせ
img6 = img3.composite(img5, CenterGravity, 0, 0, OverCompositeOp);
img6.write("sample775a.png")
exit
元画像(sf.jpg)
出力画像(sample775a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで、写真を黄色っぽく着色して端を暗くする (convertコマンドでの同様の処理)
Saturday, February 14, 2009
groovyで画像をぼかす
groovyで画像をぼかすには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample875a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像をぼかす:その2
groovyでシェイプをぼかす
groovyで画像にスマート・ブラーをかける
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample875a.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 {
gaussianBlur(radius:4)
}
}
}
元画像(sf.jpg)
出力画像(sample875a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像をぼかす:その2
groovyでシェイプをぼかす
groovyで画像にスマート・ブラーをかける
Friday, February 13, 2009
im4javaで画像を台形変形する
im4javaで画像を台形変形するには、以下のコードを実行します(windows)。
元画像(sf.jpg)
出力画像(sample919a.png)
関連情報
im4javaのまとめ
ImageMagickで台形変形を行う
im4javaのホームページ
import org.im4java.core.*;
// im4java-0.96.0-bin.tar.bz2を解凍してim4java-0.96.0.jarはclasspathに通す
public class Im4java1
{
public static void main(String args[])
throws Exception
{
try
{
IMOperation op = new IMOperation();
op.addImage("sf.jpg");
op.alpha("activate");
op.virtualPixel("transparent");
op.distort("perspective",
"0,0, 50,50, 200,0, 150,50, 0,200, 0,200, 200,200, 200,200");
op.addImage("sample919a.png");
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}
static class WindowsConvertCmd extends ImageCommand
{
public WindowsConvertCmd()
{
setCommand("cmd");
setCommand("/c");
setCommand("convert");
/* another way
setCommand("C:\\Program Files\\ImageMagick-6.4.9-Q16\\convert");
*/
}
}
}
元画像(sf.jpg)
出力画像(sample919a.png)
関連情報
im4javaのまとめ
ImageMagickで台形変形を行う
im4javaのホームページ
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>sample784(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 青色っぽい部分とそれ以外の部分を色付けする */
$im = new Imagick("sf.jpg");
$im->setImageMatte(true);
/* 青色っぽい部分に色つけ */
$im2 = $im->fxImage("(hue>0.47&&hue<0.69&&lightness>0.45)?1:0", Imagick::CHANNEL_ALPHA);
$im3 = $im2->fxImage("luminance", Imagick::CHANNEL_RED | Imagick::CHANNEL_GREEN | Imagick::CHANNEL_BLUE);
$im3->tintImage(new ImagickPixel("#aaccff"),new ImagickPixel("#f0f0f0"));
/* 青色っぽい部分以外に色つけ */
$im4 = $im->fxImage("luminance", Imagick::CHANNEL_RED | Imagick::CHANNEL_GREEN | Imagick::CHANNEL_BLUE);
$im4->tintImage(new ImagickPixel("#f8c749"),new ImagickPixel("#f0f0f0"));
/* 重ね合わせ */
$im4->compositeImage($im3, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im4->writeImage('sample784a.png');
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample784a.png" /><br />
</body>
</html>
元画像(sf.jpg)
出力画像(sample784a.png)
関連項目
ImageMagickで、青色っぽい部分とそれ以外の部分を色付けする (convertコマンドでの同様の処理)
ImageMagickで青色っぽい部分だけ他の画像と半透明に重ねあわせる
<!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>sample784(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 青色っぽい部分とそれ以外の部分を色付けする */
$im = new Imagick("sf.jpg");
$im->setImageMatte(true);
/* 青色っぽい部分に色つけ */
$im2 = $im->fxImage("(hue>0.47&&hue<0.69&&lightness>0.45)?1:0", Imagick::CHANNEL_ALPHA);
$im3 = $im2->fxImage("luminance", Imagick::CHANNEL_RED | Imagick::CHANNEL_GREEN | Imagick::CHANNEL_BLUE);
$im3->tintImage(new ImagickPixel("#aaccff"),new ImagickPixel("#f0f0f0"));
/* 青色っぽい部分以外に色つけ */
$im4 = $im->fxImage("luminance", Imagick::CHANNEL_RED | Imagick::CHANNEL_GREEN | Imagick::CHANNEL_BLUE);
$im4->tintImage(new ImagickPixel("#f8c749"),new ImagickPixel("#f0f0f0"));
/* 重ね合わせ */
$im4->compositeImage($im3, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im4->writeImage('sample784a.png');
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample784a.png" /><br />
</body>
</html>
元画像(sf.jpg)
出力画像(sample784a.png)
関連項目
ImageMagickで、青色っぽい部分とそれ以外の部分を色付けする (convertコマンドでの同様の処理)
ImageMagickで青色っぽい部分だけ他の画像と半透明に重ねあわせる
Thursday, February 12, 2009
RMagickで2つのイメージを交互に配置した画像を作成する
RMagickで2つのイメージを交互に配置した画像を作成するには、以下のコードを実行します。
require 'RMagick'
include Magick
# 2個のイメージを交互に配置した画像を作成
images1 = ImageList.new("flower1.png", "flower2.png")
img1 = images1.append(false);
images2 = ImageList.new("flower2.png", "flower1.png")
img2 = images2.append(false);
images3 = ImageList.new
images3 << img1
images3 << img2
img3 = images3.append(true);
# 作成した画像をテクスチャとして塗りつぶし
img4 = Image.new(200, 200, TextureFill.new(img3))
img4.write("sample774a.png")
exit
元画像1(flower1.png)
元画像2(flower2.png)
出力画像(sample774a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで、2種類の画像を交互に配置して背景画像を作成する (convertコマンドによる同様の処理)
require 'RMagick'
include Magick
# 2個のイメージを交互に配置した画像を作成
images1 = ImageList.new("flower1.png", "flower2.png")
img1 = images1.append(false);
images2 = ImageList.new("flower2.png", "flower1.png")
img2 = images2.append(false);
images3 = ImageList.new
images3 << img1
images3 << img2
img3 = images3.append(true);
# 作成した画像をテクスチャとして塗りつぶし
img4 = Image.new(200, 200, TextureFill.new(img3))
img4.write("sample774a.png")
exit
元画像1(flower1.png)
元画像2(flower2.png)
出力画像(sample774a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで、2種類の画像を交互に配置して背景画像を作成する (convertコマンドによる同様の処理)
groovyで画像をグレースケールに変換する
groovyで画像をグレースケールに変換するには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample874a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を反転させる
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample874a.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 {
grayscale()
}
}
}
元画像(sf.jpg)
出力画像(sample874a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を反転させる
Wednesday, February 11, 2009
ImageMagickで文字画像に半透明の濃淡をつける
ImageMagickで文字画像に半透明の濃淡をつけるには、以下のバッチファイルを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
%im%\convert.exe -size 200x40 xc:none -matte -channel rgba -font Tahoma -pointsize 30 -fill #aaccf8 -gravity center -annotate 0 "ImageMagick" -blur 0x1 ( -size 200x40 plasma:fractal -colorspace gray -median 5 -normalize -modulate 80 -blur 0x3 -matte -channel a -fx "p.r" ) -compose dst_out -composite sample769a.png
出力画像(sample769a.png)
関連項目
ImageMagickでバンド状の半透明グラデーション円で画像を切り取る
ImageMagickで横方向に擦れたような半透明画像に変換する
RMagickで文字列画像に半透明の濃淡をつける (RMagickでの同様の処理)
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
%im%\convert.exe -size 200x40 xc:none -matte -channel rgba -font Tahoma -pointsize 30 -fill #aaccf8 -gravity center -annotate 0 "ImageMagick" -blur 0x1 ( -size 200x40 plasma:fractal -colorspace gray -median 5 -normalize -modulate 80 -blur 0x3 -matte -channel a -fx "p.r" ) -compose dst_out -composite sample769a.png
出力画像(sample769a.png)
関連項目
ImageMagickでバンド状の半透明グラデーション円で画像を切り取る
ImageMagickで横方向に擦れたような半透明画像に変換する
RMagickで文字列画像に半透明の濃淡をつける (RMagickでの同様の処理)
groovyでバッジ画像を描画する
groovyでバッジ画像を描画するには、以下のコードを実行します。
出力画像(sample810a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyでイルカの形を描画する
groovyで画像をシャープにする
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample810a.png", 200, 200){
antialias("on")
star( cx:100, cy:100, count:40, ir:80, or:90,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}
出力画像(sample810a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyでイルカの形を描画する
groovyで画像をシャープにする
Tuesday, February 10, 2009
groovyで画像を反転させる
groovyで画像を反転させるには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample873a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を2値化する
ScriptomとImageMagickで画像を反転させる (ScriptomとImageMagickで同様の処理)
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample873a.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 {
invert()
}
}
}
元画像(sf.jpg)
出力画像(sample873a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を2値化する
ScriptomとImageMagickで画像を反転させる (ScriptomとImageMagickで同様の処理)
RMagickで画像を網掛けにする
RMagickで画像を網掛けにするには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample773a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで網掛けをする
require 'RMagick'
include Magick
images = ImageList.new("sf.jpg")
img = images[0]
img.rows.times { |py|
line = img.get_pixels(0, py, img.columns, 1)
line.size().times { |px|
if (px % 2) == 0 or (py % 2) == 0 then
line[px].red = line[px].red/2;
line[px].green = line[px].green/2;
line[px].blue = line[px].blue/2;
end
}
img.store_pixels(0, py, img.columns, 1, line)
}
img.write("sample773a.png")
exit
元画像(sf.jpg)
出力画像(sample773a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで網掛けをする
Monday, February 09, 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>sample771(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像を32色に減色する */
$im = new Imagick("sf.jpg");
$im->quantizeImage(32, Imagick::COLORSPACE_RGB, 0, true , false);
$im->writeImage('sample771a.gif');
$im->destroy();
?>
<img src="sample771a.gif" /><br />
</body>
</html>
元画像(sf.jpg)
出力画像(sample771a.gif)
関連項目
ImageMagickで画像を減色する (convertコマンドによる同様の処理)
ImageMagickで画像を4色グレースケールの画像に減色する
<!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>sample771(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像を32色に減色する */
$im = new Imagick("sf.jpg");
$im->quantizeImage(32, Imagick::COLORSPACE_RGB, 0, true , false);
$im->writeImage('sample771a.gif');
$im->destroy();
?>
<img src="sample771a.gif" /><br />
</body>
</html>
元画像(sf.jpg)
出力画像(sample771a.gif)
関連項目
ImageMagickで画像を減色する (convertコマンドによる同様の処理)
ImageMagickで画像を4色グレースケールの画像に減色する
groovyで星型を描画する
groovy(graphicsbuilder)で星型を描画するには、以下のコードを実行します。
出力画像(sample809a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで四角を描画する
groovyで角丸四角を描画する
groovyで正多角形を描画する
groovyで四隅の角丸を指定して四角を描画する
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample809a.png", 200, 200){
antialias("on")
star( cx:100, cy:100, count:5, ir:20, or:80,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}
出力画像(sample809a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで四角を描画する
groovyで角丸四角を描画する
groovyで正多角形を描画する
groovyで四隅の角丸を指定して四角を描画する
Sunday, February 08, 2009
ImageMagickとPHPで凹んだ角丸四角形に画像を切り取る
Imagickで凹んだ角丸四角形に画像を切り取るには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample770a.png)
関連項目
ImageMagickで凹んだ影付き角丸四角を描画する (convertコマンドによる同様の処理)
<!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コマンドによる同様の処理)
groovyでマーブルテクスチャを作成する
groovyでマーブルテクスチャを作成するには、以下のコードを実行します。
出力画像(sample872a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像にミニマムフィルタをかける
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample872a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no, fill:color("green")){
filters {
marbleTexture(angle:10, scale:20, stretch:7, turbulence:2)
}
}
}
出力画像(sample872a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像にミニマムフィルタをかける