Showing posts with label 半透明. Show all posts
Showing posts with label 半透明. Show all posts

Friday, April 01, 2011

Graphvizで背景を透明にして半透明のノードを描画する

Graphvizで背景を透明にして半透明のノードを描画するには、以下のようにcolorでアルファ値を指定します。

graph36.dot(UTF-8で保存)
digraph graph36
{
graph[bgcolor="#00000000"];
node [fontname="MS Gothic", style="filled",
fillcolor="#00000080"];
項目1 -> 項目2 -> 項目3;
項目2 -> 項目4;
}

実行コマンド
dot -Gviewport=200,200 -Gresolution=72 -Tpng graph36.dot -o test36.png

出力画像


動作環境
Graphviz 2.26.3

関連情報
Graphvizまとめ
graphvizのサイト
http://graphviz.org/

Wednesday, August 05, 2009

JOGLで半透明のティーポットを描画する

JOGLで半透明のティーポットを描画するには、以下のコードを実行します。


import java.io.*;
import javax.media.opengl.*;
import com.sun.opengl.util.*;

public class JoglSample41
{
// 出力画像サイズ
private static int width = 300;
private static int height = 300;

public static void main(String args[])
throws IOException
{
GLDrawableFactory gldf =
GLDrawableFactory.getFactory();
GLCapabilities glc = new GLCapabilities();
glc.setDoubleBuffered(false);
GLPbuffer buf = gldf.createGLPbuffer(
glc, null, width, height, null);

buf.addGLEventListener(
new GLEventListener(){
// 初期化
public void init(GLAutoDrawable dr)
{
GL gl = dr.getGL();
// 背景色
gl.glClearColor(
(float)0xf0/(float)0xff,
(float)0xf0/(float)0xff,
(float)0xf0/(float)0xff,
1f);
}

public void display(GLAutoDrawable dr)
{
GL gl = dr.getGL();
GLUT glut = new GLUT();
gl.glViewport(0, 0, width, height);

// 透視投影
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
float ratio = (float)height/(float)width;
gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,
5.0f, 40.0f);

gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0.0f, -1.0f, -8.0f);


gl.glEnable(GL.GL_LIGHTING);
gl.glEnable(GL.GL_LIGHT0);
gl.glEnable(gl.GL_COLOR_MATERIAL);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);

gl.glDisable(GL.GL_DEPTH_TEST);
gl.glClear(GL.GL_COLOR_BUFFER_BIT |GL.GL_DEPTH_BUFFER_BIT );

gl.glPushMatrix();
// 面の色を設定
gl.glColor4f(
(float)0x77/(float)0xff,
(float)0x99/(float)0xff,
(float)0xff/(float)0xff,
(float)0x20/(float)0xff
);
// X軸回転
gl.glRotatef(-70.0f, 1.0f, 0.0f, 0.0f);
// Y軸回転
gl.glRotatef(10.0f, 0.0f, 1.0f, 0.0f);
// Z軸回転
gl.glRotatef(30.0f, 0.0f, 0.0f, 1.0f);
glut.glutSolidTeapot(1.0f,false);
gl.glPopMatrix();
}

public void reshape(
GLAutoDrawable dr,
int x, int y,
int width, int height){}

public void displayChanged(
GLAutoDrawable dr,
boolean modeChanged,
boolean deviceChanged){}
}
);

GLContext context = buf.createContext(null);
context.makeCurrent();
buf.display();
Screenshot.writeToFile(
new File("sample1199a.png"), width, height, true);
context.release();
context.destroy();
}
}


出力画像(sample1199a.png)
JOGLで描画した半透明のティーポット

動作環境
JDK6 Upadate13, JOGL 1.1.1

Monday, July 13, 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>sample1132(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$hpad = 20;
$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageWidth();
$im2 = $im->clone();
$im2->cropImage($iw-$hpad*2, $ih, $hpad, 0);
$im2->blurImage(0, 5);
$im3 = new Imagick();
$im3->newPseudoImage($iw-$hpad*2, $ih,
"gradient:#00000010-#00000070");
$im2->compositeImage($im3, Imagick::COMPOSITE_OVER,
0, 0, Imagick::CHANNEL_ALL);

$im->compositeImage($im2, Imagick::COMPOSITE_OVER,
$hpad, 0, Imagick::CHANNEL_ALL);
$im->writeImage('sample1132a.png');

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

</body>
</html>


元画像(sf.jpg)


出力画像(sample1132a.png)
Imagickで背景がぼやける半透明グラデーションを描画した画像

Tuesday, June 16, 2009

RMagickで文字列画像に半透明の濃淡をつける

RMagickで文字列画像に半透明の濃淡をつけるには、以下のコードを実行します。


require 'RMagick'
include Magick

images = ImageList.new
images.new_image(200, 40){
self.background_color = "none"
}
dr = Draw.new
dr.fill = "#aaccf8"
# フォント
dr.font = "Tahoma"
# ポイントサイズ
dr.pointsize = 30
dr.gravity = CenterGravity
dr.text(0, 0, "ImageMagick")
dr.draw(images)
images[0] = images.blur_channel(0,1,AllChannels)

images2 = ImageList.new()
images2.read("plasma:fractal"){
self.size = "200x40"
}
images2.alpha = ActivateAlphaChannel
images2.colorspace = GRAYColorspace
images2[0] = images2.modulate(0.8, 1, 1).
blur_channel(0,3,AllChannels)
images2[0] = images2.fx("r", AlphaChannel)
images.composite(images2, CenterGravity, 0, 0,
DstOutCompositeOp).write("sample1146a.png")


出力画像(sample1146a.png)


動作環境
ruby1.8.6, rmagick2.9.0

関連項目
ImageMagickで文字画像に半透明の濃淡をつける (convertコマンドでの同様の処理)

Thursday, June 11, 2009

SVGRendererで画像を半透明にして重ね合わせる

SVGRendererで画像を半透明にして重ね合わせるには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample986a.svg", 200, 200){
image(file: 'sf.jpg', x:0, y:0)
image(file: 'sample3b.jpg', x:10, y:10, opacity:0.5)
}


元画像(sf.jpg)


出力画像(sample3b.jpg)


出力SVG(sample986a.svg)をPNGにレンダリングした画像
SVGRendererで半透明にして重ね合わせた画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像を半透明にして重ね合わせる (GraphicsRendererによる同様の処理)

Sunday, June 07, 2009

SVGRendererで半透明の文字列を描画する

SVGRendererで画像の上に半透明の文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample982a.svg", 200, 200){
image(file: "sf.jpg")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 26))
text( x:10, y:100,
text: "San Francisco",
fill: color("#ffffff").derive(alpha: 0x80),
borderColor: color("#ffffff").derive(alpha: 0xf0),
borderWidth: 1
)
}


元画像(sf.jpg)


出力SVG(sample982a.svg)をPNGにレンダリングした画像
SVGRendererで描画した半透明の文字列

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像の上に半透明の文字列を描画する (GraphicsRendererでの同様の処理)

Monday, June 01, 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>sample1106(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* メッセージ(UTF-8でファイルを保存する) */
$msg = "サンプル";
/* 余白 */
$padx = 20;
$pady = 5;
/* 枠の色 */
$bc = "#d0d0d0ff";
/* 塗りつぶし色 */
$fc = "#00000080";
/* 文字色 */
$tc = "white";

$im = new Imagick();
$idraw = new ImagickDraw();
/* フォント設定 */
$idraw->setFont('C:\\Windows\\Fonts\\MSGOTHIC.TTC');
/* フォントサイズ設定 */
$idraw->setFontSize(30);
/* gravity設定 */
$idraw->setGravity(Imagick::GRAVITY_CENTER);
/* 文字列のサイズ取得 */
$metrics = $im->queryFontMetrics($idraw, $msg);
$im->newPseudoImage($metrics["textWidth"]+$padx*2,
$metrics["textHeight"]+$pady*2, "xc:none");
/* 角丸四角 */
$idraw->setFillColor($fc);
$idraw->setStrokeColor($bc);
$idraw->roundrectangle(0,0,
$metrics["textWidth"]+$padx*2-1,
$metrics["textHeight"]+$pady*2-1,
10,10);
/* 文字色 */
$idraw->setFillColor($tc);
$idraw->setStrokeColor($tc);
$idraw->annotation(0, 0, $msg);

$im->drawImage($idraw);

$im->writeImage('sample1106a.png');

$im2 = new Imagick("sf.jpg");

$im2->compositeImage($im,
Imagick::COMPOSITE_OVER, 20, 100, Imagick::CHANNEL_ALL);
$im2->writeImage('sample1106b.png');

$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1106a.png" /><br />
<img src="sample1106b.png" /><br />

</body>
</html>


出力画像1(sample1106a.png)
Imagickで描画した文字列の大きさにフィットする角丸四角

出力画像2(sample1106b.png):重ねあわせ例


関連項目
ImageMagickとPHPで手書き風の円に囲まれた文字を描画する
ImageMagickとPHPでバンド状グラデーションの文字列を描画する
ImageMagickとPHPで、円形のドットの文字列を描画する

Wednesday, May 27, 2009

im4javaで画像に半透明の濃淡をつける

im4javaで画像に半透明の濃淡をつけるには、いかのコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java19
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.seed().addRawArgs("6215");
op.size(200, 200).addRawArgs("plasma:fractal");
op.fx("lightness");
op.alpha("activate").channel("a").fx("r").channel("rgba");
op.addImage("sf.jpg");
op.compose("src_in").composite();
op.addImage("sample1085a.png");
convert.run(op);

op = new IMOperation();
op.size(200, 200).addRawArgs("pattern:checkerboard");
op.addImage("sample1085a.png");
op.composite();
op.addImage("sample1085b.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
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)


出力画像1(sample1085a.png)


出力画像2(sample1085b.png):半透明濃淡をつけた画像と市松模様の重ね合わせ


関連情報
im4javaのまとめ

ImageMagickで、画像に半透明の濃淡をつけて重ね合わせる

Monday, May 25, 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>sample1098(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick("sf.jpg");
$im2 = new Imagick();
$im2->newPseudoImage(200, 200, "gradient:#ffffffff-#ffffff00");
$im2->setImageMatte(true);
$points = array(45);
//$im->distortImage(Imagick::DISTORTION_SCALEROTATETRANSLATE, $points, false);
// ScaleRotateTranslateDistortion in distort.h
$im2->distortImage(3, $points, false);

$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);

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


元画像(sf.jpg)


出力画像(sample1098a.png)
Imagickで回転させた半透明グラデーションで切り取った画像

関連項目
ImageMagickを使用して傾けた半透明グラデーションで画像を切り取る (convertコマンドでの同様の処理)

Friday, May 08, 2009

im4javaで画像に半透明グラデーションをかけて重ね合わせる

im4javaで画像に半透明グラデーションをかけて重ね合わせるには、以下のコードを実行します。


import java.util.*;
import org.im4java.core.*;
import org.im4java.process.*;

// im4java-0.97.0-bin.tar.bz2を解凍してim4java-0.97.0.jarはclasspathに通す
public class Im4java14
{
public static void main(String args[])
throws Exception
{
try
{
// ConvertCmd convert = new ConvertCmd();
ImageCommand convert = new WindowsConvertCmd();

IMOperation op = new IMOperation();
op.addImage("sample3b.png");
// op.alpha("activate");
// op.channel("rgba");
IMOperation so1 = op.openOperation();
so1.size(100, 100);
so1.addImage("gradient:#ffffffff-#00000000");
op.closeOperation();
op.compose("copy-opacity");
op.composite();

IMOperation so2 = op.openOperation();
so2.size(200, 200);
so2.addImage("sf.png");
op.closeOperation();
op.p_swap();
op.geometry(100, 100, 20, 20);
op.compose("src-over");
op.composite();
op.addImage("sample1076a.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

// im4java 0.97
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");
*/
}
}
}



元画像1(sf.png)


元画像2(sample3b.png)


出力画像(sample1076a.png)
im4javaで半透明グラデーションをかけて重ね合わせた画像

関連情報
im4javaのまとめ

ImageMagickで画像に半透明グラデーションをかける (convertコマンドによる同様の処理)

Monday, May 04, 2009

ScriptomとImageMagickで画像と半透明グラデーションを重ねる

ScriptomとImageMagickで画像と半透明グラデーションを重ねるには、以下のコードを実行します。

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
width = im.identify("-format", "%w", "sf2.jpg")
height = im.identify("-format", "%h", "sf2.jpg")
im.convert("sf2.jpg", "-size", "${width}x${height}",
"gradient:#ffffffff-#00000000",
"-composite", "sample1074a.png")
}

元画像(sf2.jpg)


出力画像(sample1074a.png)



動作環境
Groovy1.6.0, JDK1.6 Update12, ImageMagick6.5.0, Microsoft VC++ 2008 Redistributable
※ImageMagickインストール時にCOMインターフェイスも入れておくこと。

関連項目
ImageMagickで霧がかかったような効果

Tuesday, April 28, 2009

groovyで画像を半透明にして重ね合わせる

groovyで画像を半透明にして重ね合わせるには、以下のコードを実行します


import javax.imageio.*;
import groovy.swing.j2d.*

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample949a.png", img.width, img.height){
antialias("on")
image(image: img)
image(file: 'sample3b.jpg', x:10, y:10, opacity:0.5)
}


元画像(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample949a.png)
groovyで半透明にして重ね合わせた画像

動作環境
Groovy1.6.0, JDK1.6 Update12

関連項目
groovyで画像をグレースケールと反転させたグレースケールを交互に配置した画像に変換する
SVGRendererで画像を半透明にして重ね合わせる (SVGRendererによる同様の処理)

Tuesday, April 21, 2009

pycairoで半透明の四角を描画する

pycairoで半透明の四角を描画するには、以下のコードを実行します。

# coding=UTF-8
import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
img = cairo.ImageSurface.create_from_png("sf.png")
ctx = cairo.Context(surface)

ctx.set_source_surface(img, 0, 0)
ctx.paint()

ctx.rectangle(10, 50, 180, 100)
ctx.set_source_rgba(0x00/float(0xff), 0x00/float(0xff),
0x00/float(0xff), 0x80/float(0xff))
ctx.fill()

surface.write_to_png('sample1027a.png')

元画像(sf.jpg)


出力画像(sample1027a.png)
pycairoで描画した半透明の四角

動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Saturday, April 18, 2009

pycairoで画像を半透明に重ね合わせる

pycairoで画像を半透明に重ね合わせるには、以下のコードを実行します。

# coding=UTF-8
import cairo

img1 = cairo.ImageSurface.create_from_png("sf.png")
img2 = cairo.ImageSurface.create_from_png("sample3b.png")

ctx = cairo.Context(img1)
ctx.set_source_surface(img2, 50, 50)
ctx.paint_with_alpha(0.5)
img1.write_to_png('sample1024a.png')

元画像1(sf.png)


元画像2(sample3b.png)


出力画像(sample1024a.png)
pycairoで半透明に重ね合わせた画像

動作環境
Python2.6.1, GTK+2.16.0, pycairo1.4.12-2

関連項目
pycairoのまとめ

pycairoをWindowsにインストール

Wednesday, April 01, 2009

ImageMagickを使用して傾けた半透明グラデーションで画像を切り取る

ImageMagickを使用して傾けた半透明グラデーションで画像を切り取るには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf.jpg -matte -channel rgba ( -size 200x200 gradient:#ffffffff-#00000000 -distort SRT 45 ) -compose dst_in -composite sample912a.png

rem 市松模様と重ね合わせ
%im%\convert.exe -size 200x200 pattern:CHECKERBOARD sample912a.png -composite sample912b.png

元画像(sf.jpg)


出力画像1(sample912a.png)


出力画像2(sample912b.png)


関連項目
ImageMagickとPHPで回転させた半透明グラデーションで画像を切り取る

Wednesday, March 25, 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>sample910(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像に半透明の濃淡をつける */

$im = new Imagick("sf.jpg");

/* プラズマフラクタル画像 */
$im2 = new Imagick();
$im2->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), 'plasma:fractal');
$im2->setImageColorspace(Imagick::COLORSPACE_GRAY);
$im2->setImageMatte(true);
$im3 = $im2->fxImage("r", Imagick::CHANNEL_ALPHA);
/* 切り取り */
$im3->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);
$im3->writeImage('sample910a.png');

/* 他の画像と重ね合わせ */
$im4 = new Imagick();
$im4->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), "pattern:CHECKERBOARD");

/* 重ね合わせ */
$im4->compositeImage($im3, Imagick::COMPOSITE_OVER, 0, 0,
Imagick::CHANNEL_ALL);

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

</body>
</html>

元画像(sf.jpg)


出力画像1(sample910a.png)


出力画像2(sample910b.png)


関連項目
ImageMagickで、画像に半透明の濃淡をつけて重ね合わせる (convertコマンドによる同様の処理)
ImageMagickとPHPを使用して画像に濃淡をつける

Monday, March 02, 2009

groovyで画像の上に半透明の文字列を描画する

groovyで画像の上に半透明の文字列を描画するには、以下のコードを実行します。


import groovy.swing.j2d.*

def gr = new GraphicsRenderer()
gr.renderToFile("sample820a.png", 200, 200){
antialias("on")
image(file: "sf.jpg")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 26))
text( x:10, y:100,
text: "San Francisco",
fill: color("#ffffff").derive(alpha: 0x80),
borderColor: color("#ffffff").derive(alpha: 0xf0),
borderWidth: 1
)
}


元画像(sf.jpg)


出力画像(sample820a.png)


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

関連項目
groovyで円状に文字列を描画する
SVGRendererで半透明の文字列を描画する (SVGRendererでの同様の処理)

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での同様の処理)

Monday, February 02, 2009

ImageMagickでバンド状の半透明グラデーション円で画像を切り取る

ImageMagickでバンド状の半透明グラデーション円で画像を切り取るには、以下のバッチファイルを実行します。

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

%im%\convert.exe -size 200x200 xc:none -matte -channel rgba -fill #80808080 -draw "ellipse 100,100,70,70,0,360" -draw "ellipse 100,100,80,80,0,360" -draw "ellipse 100,100,90,90,0,360" -draw "ellipse 100,100,100,100,0,360" sf.jpg -compose src_in -composite sample763a.png

%im%\convert.exe sf2.jpg sample763a.png -composite sample763b.png


元画像(sf.jpg)


出力画像1(sample763a.png)


出力画像2(sample763b.png):ほかの画像と重ねあわせ例


関連項目
ImageMagickで、端が半透明の円形に画像を切り取る
ImageMagickで、波型の円で端をぼかして切り取る

Wednesday, January 21, 2009

RMagickで画像の上に半透明グラデーションの斜線を描画する

RMagickで画像の上に半透明グラデーションの斜線を描画するには、以下のコードを実行します。


require 'RMagick'
include Magick

# 画像に半透明グラデーションの斜線を描画する

images = ImageList.new("sf.jpg")
images2 = ImageList.new
images2 << Image.new(images[0].columns, images[0].rows){
self.background_color = "white"
}
images2[0].alpha = ActivateAlphaChannel
images2[0] = images2.fx("(i+j)%4==0?#BBDDFF:0")
images2[0] = images2.fx("(i+j)%4==0?p*(h-j)/h:0", AlphaChannel)

img3 = images[0].composite(images2[0], CenterGravity, 0, 0,
OverCompositeOp);

img3.write("sample755a.png")

exit


fxメソッドのi,jはx,y座標、hは画像の高さを示します。

元画像(sf.jpg)


出力画像(sample755a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
RMagickで画像を透過PNGのエッジ抽出画像に変換する
RMagickで、画像を中心から上下へ徐々に大きく揺らす