RMagickで半透明の吹き出しを描画するには、以下のコードを実行します。
require 'RMagick'
include Magick
images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel
dr = Draw.new
dr.fill = "#00000050"
dr.roundrectangle(40,50, 160,80, 10,10)
dr.polygon(*[100,81, 100,91, 110,81])
dr.draw(images);
# フォント
dr.font = "Tahoma"
# ポイントサイズ
dr.pointsize = 15
# 描画色
dr.fill = "#ffffffd0"
# gravity
dr.gravity = CenterGravity
dr.annotate(images, 0, 0, 55, 55, "San Francisco"){
self.gravity = NorthWestGravity
}
images.write("sample915a.png")
exit
元画像(sf.jpg)
出力画像(sample915a.png)
動作環境
ruby1.8.6, rmagick2.7.1
Saturday, March 14, 2009
groovyで画像をシャープにする - その2
groovyで画像をシャープにするには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample826a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像をシャープにする
Java2DとJava Image Filters(pixels)を使用して画像をシャープにする
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample826a.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 {
sharpen()
}
}
}
元画像(sf.jpg)
出力画像(sample826a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像をシャープにする
Java2DとJava Image Filters(pixels)を使用して画像をシャープにする
Friday, March 13, 2009
RMagickで画像を手でちぎったように切り取る
RMagickで画像を手でちぎったように切り取るには、以下のコードを実行します。
require 'RMagick'
include Magick
# 余白
px = 10
py = 10
images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel
# マスク作成
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.rectangle(px, py, images2.columns-px, images2.rows-py)
dr.draw(images2);
images2[0] = images2.spread(5).median_filter(3)
# マスク画像で切り取り
images.composite(images2, 0, 0, DstInCompositeOp).write("sample914a.png")
exit
元画像(sf.jpg)
出力画像(sample914a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで手で切り取ったように不規則に画像を切り取る (convertコマンドでの同様の処理)
require 'RMagick'
include Magick
# 余白
px = 10
py = 10
images = ImageList.new("sf.jpg")
images.alpha = ActivateAlphaChannel
# マスク作成
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "white"
dr.rectangle(px, py, images2.columns-px, images2.rows-py)
dr.draw(images2);
images2[0] = images2.spread(5).median_filter(3)
# マスク画像で切り取り
images.composite(images2, 0, 0, DstInCompositeOp).write("sample914a.png")
exit
元画像(sf.jpg)
出力画像(sample914a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで手で切り取ったように不規則に画像を切り取る (convertコマンドでの同様の処理)
groovyで画像にマーブルフィルタをかける
groovyで画像にマーブルフィルタをかけるには、以下のコードを実行します。
元画像(sf2.jpg)
出力画像(sample844a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を六角形の升目状に変換する
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample844a.png", 300, 225){
antialias("on")
rect( x: 0, y: 0, width: 300, height: 225,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf2.jpg' )
filters {
marble(xScale: 8, yScale:8,
amount:1.0)
}
}
}
元画像(sf2.jpg)
出力画像(sample844a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を六角形の升目状に変換する
Thursday, March 12, 2009
ImageMagickで渦巻き画像を生成する
ImageMagickで渦巻き画像を生成するには、以下のバッチファイルを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe -size 1x1 xc:white xc:orange -append -filter point -resize 200x200! -swirl 2560 -crop 100x100+50+50 sample897a.png
出力画像(sample897a.png)
関連項目
ImageMagickで画像を渦巻き模様で切り取る
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe -size 1x1 xc:white xc:orange -append -filter point -resize 200x200! -swirl 2560 -crop 100x100+50+50 sample897a.png
出力画像(sample897a.png)
関連項目
ImageMagickで画像を渦巻き模様で切り取る
groovyでプラズマ画像を生成する
groovyでプラズマ画像を生成するには、以下のコードを実行します。
出力画像(sample825a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を六角形の升目状に変換する
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample825a.png", 200, 200){
antialias("on")
rect( x: 0, y: 0, width: 200, height: 200,
borderColor: no){
filters {
plasma(turbulence:1.1, seed:318)
}
}
}
出力画像(sample825a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を六角形の升目状に変換する
Wednesday, March 11, 2009
RMagickで放射ストライプを描画する
RMagickで放射ストライプを描画するには、以下のコードを実行します。
出力画像(sample903a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
RMagickでへこんだ影つき円を描画する
require 'RMagick'
include Magick
#画像サイズ
sx=200
sy=200
#放射ストライプの中心
cx=120
cy=120
#ストライプ数
rays=18
sr = 360/rays
# 放射ストライプを描画する
images = ImageList.new
images.new_image(sx, sy){
self.background_color = "white"
}
rays.times { |rc|
points = [cx, cy,
cx+Math.cos(Math::PI*(sr*rc)/180)*sx,
cy+Math.sin(Math::PI*(sr*rc)/180)*sy,
cx+Math.cos(Math::PI*(sr*rc+sr/2)/180)*sx,
cy+Math.sin(Math::PI*(sr*rc+sr/2)/180)*sy
]
dr = Draw.new
dr.fill = "#99bbff"
dr.polygon(*points)
dr.draw(images);
}
images.write("sample903a.png")
exit
出力画像(sample903a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
RMagickでへこんだ影つき円を描画する
groovyで画像を六角形の升目状に変換する
groovyで画像を六角形の升目状に変換するには、以下のコードを実行します。
元画像(sf2.jpg)
出力画像(sample844a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
Java2DとJava Image Filters(pixels)を使用して画像をステンドグラス風に変換する
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample844a.png", 300, 225){
antialias("on")
rect( x: 0, y: 0, width: 300, height: 225,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf2.jpg' )
filters {
crystallize(edgeThickness:0.4,
edgeColor: color("#99bbee"))
}
}
}
元画像(sf2.jpg)
出力画像(sample844a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
Java2DとJava Image Filters(pixels)を使用して画像をステンドグラス風に変換する
Tuesday, March 10, 2009
ImageMagickとPHPで画像を荒いドットを交互に配置したモザイク画像に変換する
Imagickで画像を荒いドットを交互に配置したモザイク画像に変換するには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample907a.png)
関連項目
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>sample907(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像を荒いドットを交互に配置したモザイク画像に変換する */
$dx=10;
$dy=10;
$fn="sf.jpg";
$im = new Imagick($fn);
$w=$im->getImageWidth();
$h=$im->getImageHeight();
/* 左端の余白イメージを作成 */
$im2 = new Imagick($fn);
$im2->cropImage(1, $h, 0, 0);
$im2->resizeImage($dx/2, $h, Imagick::FILTER_POINT, 1);
/* 右端の余白イメージを作成 */
$im3 = new Imagick($fn);
$im3->cropImage(1, $h, $w-1, 0);
$im3->resizeImage($dx/2, $h, Imagick::FILTER_POINT, 1);
/* 横方向に連結 */
$im2->addImage($im);
$im2->addImage($im3);
$im2->setImageIndex(0);
$im4 = $im2->appendImages(false);
/* 縮小 */
$im4->resizeImage($w/$dx+1, $h/$dy,
Imagick::FILTER_MITCHELL, 1);
/* 偶数ラインを透明に */
$im4->setImageMatte(true);
$it = $im4->getPixelIterator();
foreach($it as $py => $line){
foreach($line as $px => $pixel){
if( $py%2 == 0 ){
$pixel->setColorValue(Imagick::COLOR_ALPHA, 0);
}
}
$it->syncIterator();
}
/* 拡大&余白の切り取り */
$im4->resizeImage($w+$dx,
$im->getImageHeight(),
Imagick::FILTER_POINT, 0);
$im4->cropImage($w, $h, $dx/2, 0);
/* 元画像を縮小&拡大 */
$im->resizeImage($w/$dx, $h/$dy,
Imagick::FILTER_MITCHELL, 1);
$im->resizeImage($w, $h, Imagick::FILTER_POINT, 1);
/* 重ね合わせ */
$im->compositeImage($im4, Imagick::COMPOSITE_OVER,
0, 0, Imagick::CHANNEL_ALL);
$im->writeImage('sample907a.png');
$im4->destroy();
$im3->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample907a.png" /><br />
</body>
</html>
元画像(sf.jpg)
出力画像(sample907a.png)
関連項目
ImageMagickとPHPで、画像を荒いドット画像に変換する
groovyで画像をひねる
groovyで画像をひねったように変形させるには、以下のコードを実行します。
元画像(sf2.jpg)
出力画像(sample824a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を台形変形させる
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample824a.png", 300, 225){
antialias("on")
rect( x: 0, y: 0, width: 300, height: 225,
borderColor: no){
texturePaint(x: 0, y: 0, file: 'sf2.jpg' )
filters {
twirl(centreX:0.4, centreY:0.6, angle:90, radius:150)
}
}
}
元画像(sf2.jpg)
出力画像(sample824a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像を台形変形させる
Monday, March 09, 2009
im4javaで画像をセピアトーンに変更する
im4javaで画像をセピアトーンに変更するには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample922a.png)
関連情報
im4javaのまとめ
im4javaで画像を角丸四角に切り取る
im4javaで画像を上下反転・左右反転させる
im4javaのホームページ
im4java
import org.im4java.core.*;
// im4java-0.96.0-bin.tar.bz2を解凍してim4java-0.96.0.jarはclasspathに通す
public class Im4java5
{
public static void main(String args[])
throws Exception
{
try
{
// 画像をセピアトーンに変換
IMOperation op = new IMOperation();
op.addImage();
op.sepiaTone(55000.0);
op.addImage();
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();
convert.run(op, "sf.jpg", "sample922a.png");
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}
// im4java 0.96
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)
出力画像(sample922a.png)
関連情報
im4javaのまとめ
im4javaで画像を角丸四角に切り取る
im4javaで画像を上下反転・左右反転させる
im4javaのホームページ
im4java
RMagickでへこんだ影つき円を描画する
RMagickでへこんだ影つき円を描画するには、以下のコードを実行します。
require 'RMagick'
include Magick
#円の中心
cx=100
cy=100
#半径
rx=90
ry=90
# 凹んだ影付き円を描画する
images = ImageList.new("sf.jpg")
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "black"
}
images2.alpha = ActivateAlphaChannel
dr = Draw.new
dr.fill = "white"
dr.ellipse(cx,cy,rx,ry,0,360)
dr.draw(images2);
images2[0] = images2.negate(true)
images2[0] = images2.fx("r", AlphaChannel)
images2[0] = images2.fx("#F0F0FF", DefaultChannels)
images2[0].background_color = "black"
shadowimg = images2[0].shadow(3, 3, 3, 0.4)
img = images.composite(shadowimg, 0, 0, OverCompositeOp);
img.composite(images2, 0, 0, OverCompositeOp).write("sample902a.png")
exit
元画像(sf.jpg)
出力画像(sample902a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで、凹んだ影つき円を描画する (convertコマンドによる似た処理)
require 'RMagick'
include Magick
#円の中心
cx=100
cy=100
#半径
rx=90
ry=90
# 凹んだ影付き円を描画する
images = ImageList.new("sf.jpg")
images2 = ImageList.new
images2.new_image(images.columns, images.rows){
self.background_color = "black"
}
images2.alpha = ActivateAlphaChannel
dr = Draw.new
dr.fill = "white"
dr.ellipse(cx,cy,rx,ry,0,360)
dr.draw(images2);
images2[0] = images2.negate(true)
images2[0] = images2.fx("r", AlphaChannel)
images2[0] = images2.fx("#F0F0FF", DefaultChannels)
images2[0].background_color = "black"
shadowimg = images2[0].shadow(3, 3, 3, 0.4)
img = images.composite(shadowimg, 0, 0, OverCompositeOp);
img.composite(images2, 0, 0, OverCompositeOp).write("sample902a.png")
exit
元画像(sf.jpg)
出力画像(sample902a.png)
動作環境
ruby1.8.6, rmagick2.7.1
関連項目
ImageMagickで、凹んだ影つき円を描画する (convertコマンドによる似た処理)
groovyで画像の明るさを変更する
groovyで画像の明るさを変更するには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample846a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyでエンボス処理をおこなう
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample846a.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 {
contrast(brightness: 0.5)
}
}
}
元画像(sf.jpg)
出力画像(sample846a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyでエンボス処理をおこなう
Sunday, March 08, 2009
ImageMagickで特定の色調のモノトーンビデオ風画像に変換する-その2
特定の色調のモノトーンビデオ風画像に変換するには、以下のバッチファイルを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe sf.jpg -colorspace gray +contrast +contrast -fill #0822c3 -colorize 40%% -fx "j%%3==0?p*0.5:p" sample895a.png
元画像(sf.jpg)
出力画像(sample895a.png)
関連項目
ImageMagickで特定の色調のモノトーンビデオ風画像に変換する
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.8-Q16
%im%\convert.exe sf.jpg -colorspace gray +contrast +contrast -fill #0822c3 -colorize 40%% -fx "j%%3==0?p*0.5:p" sample895a.png
元画像(sf.jpg)
出力画像(sample895a.png)
関連項目
ImageMagickで特定の色調のモノトーンビデオ風画像に変換する
groovyでエンボス処理をおこなう
groovyでエンボス処理をおこなうには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample823a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像に着色する
import groovy.swing.j2d.*
def gr = new GraphicsRenderer()
gr.renderToFile("sample823a.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 {
emboss()
}
}
}
元画像(sf.jpg)
出力画像(sample823a.png)
動作環境
Groovy1.6.0 Beta2, JDK1.6 Update11
関連項目
groovyで画像に着色する