Showing posts with label 透過. Show all posts
Showing posts with label 透過. Show all posts

Tuesday, June 16, 2009

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

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample991a.svg", 200, 200){
image(file: "sf.jpg")
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'black', opacity:0.5){
rect(x:20, y:20, width: 160, height: 160)
text( x:30, y:60, text: "SF")
}
}


元画像(sf.jpg)


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

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

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

Thursday, April 30, 2009

groovyで透明な文字列を描画する

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


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

img = ImageIO.read(new File("sf.jpg"))
gr = new GraphicsRenderer()
gr.renderToFile("sample950a.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'white'){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}
gr.renderToFile("sample950b.png", img.width, img.height){
antialias("on")
image(image: img)
font(new java.awt.Font('Tahoma', java.awt.Font.BOLD, 110))
subtract( borderColor: no, fill: 'black', opacity:0.5){
rect(x:20, y:20, width: img.width-40, height: img.height-40)
text( x:30, y:60, text: "SF")
}
}


元画像(sf.jpg)


出力画像1(sample950a.png)


出力画像2(sample950b.png)
groovyで透明な文字列を描画した画像

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

関連項目
groovyで文字列をガラスのように描画する
groovyで日本語を描画する
SVGRendererで透明な文字列を描画する (SVGRendererでの同様の処理)

Friday, March 20, 2009

ImageMagickで透明な文字列を描画する - その2

ImageMagickでantialiasを効かせて透明な文字列を描画するには、以下のバッチファイルを実行します。

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

%im%\convert.exe sf.jpg ( -size 150x150 xc:white -matte -fill black -font Tahoma -pointsize 120 -gravity center -draw "text 0,0 'SF'" -channel a -fx "r" -channel rgb -fx "#BBDDFF" ) -composite sample904a.png

%im%\convert.exe sf.jpg ( -size 150x150 xc:white -matte -fill black -font Tahoma -pointsize 120 -gravity center -draw "text 0,0 'SF'" -channel a -fx "r*0.5" -channel rgb -fx "#000000" ) -composite sample904b.png

出力画像1(sample904a.png)


出力画像2(sample904b.png)


関連項目
ImageMagickで透明な文字列を描画する

Saturday, December 20, 2008

ImageMagickで白と透明色の市松模様の文字列を描画する

ImageMagickで白と透明色の市松模様の文字列を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.4-Q16
rem 白と透明色の市松模様の文字列画像を生成
%im%\convert.exe -size 300x80 xc:none -stroke none -tile pattern:GRAY50 -font Comic-Sans-MS-Bold -gravity center +antialias -draw "font-size 40 text 0,0 'ImageMagick'" -transparent black sample728a.png
rem 元画像と生成した文字列画像を重ね合わせ
%im%\convert.exe sf2.jpg sample728a.png -composite sample728b.png

上記バッチファイルではGRAY50パターン(白黒の市松模様)をantialiasなしで
文字列を描画した後、黒色部分を透明色に変えて(-transparent black)います。
その後に、元画像と重ね合わせをしています。

元画像(sf2.jpg)


出力画像(sample728b.png)

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で半透明のぼかし文字列を描画する

Wednesday, May 28, 2008

JMagickで、画像を2値化してメッシュ状にした透過PNGを生成する

JMagickで、画像を2値化してメッシュ状にした透過PNGを生成するには、以下のコードを実行します。

import magick.*;

public class JMagickTest33
{
public static void main(String args[])
throws MagickException
{
MagickImage mi = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi.thresholdImage(40000);

/* 画像のピクセルを取得 */
int iw = (int)mi.getDimension().getWidth();
int ih = (int)mi.getDimension().getHeight();
byte data[] = new byte[iw*ih*4];
mi.dispatchImage(0, 0, iw, ih, "RGBA", data);
int lx, ly;
for(ly=0;ly<ih;ly++){
for(lx=0;lx<iw;lx++){
if( lx%2 == 0 && ly%2 == 0 &&
data[ly*iw*4+lx*4] == 0 ){
/* 黒色部分でx,yが2で割り切れる場合 */
data[ly*iw*4+lx*4]=(byte)0x30;
data[ly*iw*4+lx*4+1]=(byte)0x70;
data[ly*iw*4+lx*4+2]=(byte)0xa0;
data[ly*iw*4+lx*4+3]=(byte)0xff;
} else {
data[ly*iw*4+lx*4]=0;
data[ly*iw*4+lx*4+1]=0;
data[ly*iw*4+lx*4+2]=0;
data[ly*iw*4+lx*4+3]=0;
}
}
}
mi.constituteImage(iw, ih, "RGBA", data);

mi.setFileName("sample461a.png");
mi.writeImage(new ImageInfo());

/* 重ね合わせ例 */
MagickImage mi2 = new MagickImage(new ImageInfo("sf2.jpg"));
mi2.compositeImage(CompositeOperator.SrcOverCompositeOp,mi,0,0);
mi2.setFileName("sample461b.png");
mi2.writeImage(new ImageInfo());

}
}


元画像(tree1.jpg)


出力画像(sample461a.png)


ほかの画像と重ね合わせ例(sample461b.png)


環境
JDK6 Upadate6(JDK1.6.0_06)/jmagick-win-6.3.9-Q16


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
ImageMagickで、画像を2値化してメッシュ状にした透過PNGを生成する (Convertコマンドで同様の処理を実行)

Saturday, March 01, 2008

ImageMagickで、2値化した画像を透明に設定したり、色を変える

2値化した画像の黒色部分を透明にするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.8-Q16
rem 2値化した画像の黒色部分を透明に設定
%im%\convert.exe tree1.jpg -threshold 50%% -matte -channel rgba -fill #00000000 -transparent #000000ff sample324a.png
rem 重ね合わせ例
%im%\convert.exe -size 300x225 pattern:checkerboard sample324a.png -composite sample324b.png

元画像(tree1.jpg)


重ね合わせ例(324b.png)


画像を2値化して白色部分を透明にするには、以下のバッチファイルを実行します。
%im%\convert.exe tree1.jpg -threshold 50%% -matte -channel rgba -fill #ffffff00 -transparent #ffffffff sample324c.png
rem 重ね合わせ例
%im%\convert.exe -size 300x225 pattern:checkerboard sample324c.png -composite sample324d.png

出力画像(sample324c.png):白色部分が透過色です。


重ね合わせ例(sample324d.png)


2値化後、黒色部分を水色に、白色部分を透明にするには、以下のバッチファイルを実行します。
%im%\convert.exe tree1.jpg -threshold 50%% -matte -channel rgba -fill #ffffff00 -transparent #ffffffff -fill #bbddffff -opaque #000000ff sample324e.png
rem 重ね合わせ例
%im%\convert.exe -size 300x225 pattern:checkerboard sample324e.png -composite sample324f.png

出力画像(sample324e.png):白色部分が透明になります。


重ね合わせ例(sample324f.png)


関連項目
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする

Monday, September 24, 2007

ImageMagickで、グラデーションのかかった同心円を描画する

グラデーションのかかった同心円を描画するには、
以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe -size 200x200 xc:none -channel rgba ( -size 1x1 xc:#3070A0FF xc:#FFFF10FF +append -resize 2x1 ) -fx "(i-90)^2+(j-130)^2<=150^2&&floor(sqrt((i-90)^2+(j-130)^2))%%10>5?
v.p{floor(sqrt((i-90)^2+(j-130)^2)/10)*10/150,0}:#00000000" sample229a.png

上の例では、中心90,130から最大半径150ピクセル、10ピクセルごとに4ピクセルの厚さの同心円を描画しています。

出力画像(sample229a.png)


関連項目
ImageMagickで透明なラインが入った円を描画する
ImageMagickでバンド状にグラデーションがかかった円を描画する

Saturday, September 22, 2007

ImageMagickで画像の上下を波型にして透明にする

画像の上下を波型にして切り取るには、以下のバッチを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe sf.jpg -matte -channel a -fx "j>=(sin(i/w*pi*5)*10+10)&&j<(h-10+sin(i/w*pi*5)*10)?1:0" -channel rgba sample228a.png

上記の例では20ピクセルの高さの波型をつけています。

元画像(sf.jpg)


出力画像(sample228a.png)

Thursday, September 20, 2007

ImageMagickで、画像の端をぎざぎざに切り取る

画像の端をぎざぎざに切り取るには、以下のバッチを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe sf.jpg -matte -channel a -fx "j%%10<=4&&i>j%%10&&i<(w-j%%10)?1:0" ( sf.jpg -matte -channel a -fx "j%%10>4&&i>10-j%%10&&i<(w-(10-j%%10))?1:0" ) -composite -channel rgba sample226a.png

上記のバッチでは、幅10ピクセルのぎざぎざを入れています。

元画像(sf.jpg)


出力画像(sample226a.png)

Friday, September 14, 2007

ImageMagickで透明なラインが入った円を描画する

同心円の透明なラインが入った円を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe -size 200x200 xc:none -channel rgba -fx "(i-90)^2+(j-130)^2<=70^2&&floor(sqrt((i-90)^2+(j-130)^2))%%4>1?#C9BFAAFF:#00000000" sample222a.png

出力画像(sample222a.png)


rem 重ねあわせ例
%im%\convert.exe sf.jpg sample222a.png -composite sample222b.jpg

重ね合わせ例(sample222b.jpg)


関連項目
ImageMagickで、グラデーションのかかった同心円を描画する

Monday, September 10, 2007

ImageMagickで円状に透明スリットが広がるように加工する

ImageMagickで円状に透明スリットが広がるように加工するには、
以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe -size 200x200 xc:none sf.jpg -channel rgba -fx "dp=sqrt((120-i)^2+(150-j)^2); dp<20||(dp-20)%%15>floor((dp-20)/15)?v.p:#00000000" sample217a.png

元画像(sf.jpg)


出力画像(sample217a.png)


2008/01/04追記
ver6.3.7では、以下のように-matteを追加します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.7-Q16
%im%\convert.exe -size 200x200 xc:none sf.jpg -matte -channel rgba -fx "dp=sqrt((120-i)^2+(150-j)^2); dp<20||(dp-20)%%15>floor((dp-20)/15)?v.p:#00000000" sample217a.png

Friday, September 07, 2007

ImageMagickで透明なスリットが徐々に広くなっていく加工をする

ImageMagickで透明なスリットが徐々に広くなっていく加工をするには、
以下のバッチを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.5-Q16
%im%\convert.exe -size 200x200 xc:none sf.jpg -channel rgba -fx "j<h/3||(j-h/3)%%15>floor((j-h/3)/15)?v.p:#00000000" sample216a.png
上記では、画面の1/3の高さから徐々にスリットが広がるようになっています。

元画像(sf.jpg)


出力画像(sample216a.png)


2008/01/04追記
ver6.3.7では、以下のように-matteを追加します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.7-Q16
%im%\convert.exe -size 200x200 xc:none sf.jpg -matte -channel rgba -fx "j<h/3||(j-h/3)%%15>floor((j-h/3)/15)?v.p:#00000000" sample216a.png


関連項目
ImageMagickで円状に透明スリットが広がるように加工する

Sunday, July 15, 2007

ImageMagickで青色っぽい部分を透過させる

ImageMagickで青色っぽい部分を透過させるには、以下のバッチファイルを実行します。

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

rem 青色っぽい部分を透明に設定して透過PNG作成
%im%\convert.exe tree1.jpg -channel A -fx "(hue>0.47&&hue<0.69&&luminosity>0.5)?0:1" sample180a.png

rem グラデーションと透過PNGの重ね合わせ
%im%\convert.exe -size 300x225 gradient:#80ffff-#e0ff80 sample180a.png -composite sample180b.jpg

元画像(tree1.jpg)


透過PNG(sample180a.png)


グラデーションと重ね合わせた出力画像(sample180b.jpg)


2008/01/04追記
ver6.3.7では、以下のバッチファイルのように-matteを追加します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.7-Q16
%im%\convert.exe tree1.jpg -matte -channel A -fx "(hue>0.47&&hue<0.69&&luminosity>0.5)?0:1" sample180a.png
%im%\convert.exe -size 300x225 gradient:#80ffff-#e0ff80 sample180a.png -composite sample180b.jpg

2008/07/13追記
ver6.4.0あたりからluminosityからlightnessに変わったので、以下のバッチを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.2-Q16

%im%\convert.exe tree1.jpg -matte -channel A -fx "(hue>0.47&&hue<0.69&&lightness>0.5)?0:1" sample180a.png

%im%\convert.exe -size 300x225 gradient:#80ffff-#e0ff80 sample180a.png -composite sample180b.jpg

Wednesday, May 02, 2007

ImageMagickで半透明矩形に透過文字を描画して影付けする

ImageMagickで半透明矩形に透過文字を描画して影付けするには、
以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.3-Q16
%im%\convert.exe -size 100x50 xc:#00000080 -channel RGBA -fill #000000ff +antialias -gravity center -draw "font-size 18 text 0,0 'Flower'" -fx "p==#000000?0:p" sample149a.png
%im%\convert.exe sample7.jpg ( sample149a.png -background none -gravity center -extent 150x100 ) ( +clone -background #BBDDFF -shadow 150x3+3+3 ) +swap -mosaic sample149b.jpg

元画像(sample7.jpg)


出力画像(sample149b.jpg)


2008/01/04追記
ver6.3.7では、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.7-Q16
%im%\convert.exe -matte -channel RGBA -size 100x50 xc:#00000080 -fill #000000ff +antialias -gravity center -draw "font-size 18 text 0,0 'Flower'" -fx "p==#000000FF?0:p" sample149a.png
%im%\convert.exe sample7.jpg ( sample149a.png -background none -gravity center -extent 150x100 ) ( +clone -background #BBDDFF -shadow 150x3+3+3 ) +swap -mosaic -crop 150x100+0+0 sample149b.jpg