Saturday, June 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>sample1112(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 分割数 */
$divx=3;
$divy=3;
/* 彩度の範囲 */
$minsa=100;
$maxsa=150;
$minsb=30;
$maxsb=80;


$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageWidth();
$bw = floor($iw/$divx);
$bh = floor($ih/$divy);
for($ly=0;$ly<$divy;$ly++){
for($lx=0;$lx<$divx;$lx++){
$tbw=($lx==$divx-1)?$iw-($divx-1)*$bw:$bw;
$tbh=($ly==$divy-1)?$ih-($divy-1)*$bh:$bh;
$tim = $im->clone();
$tim->cropImage($tbw, $tbh,
$bw*$lx, $bh*$ly);
if( ($ly*$divx+$lx)%2 == 0 ){
$tim->modulateImage(100,
rand($minsa,$maxsa), 100);
} else {
$tim->modulateImage(100,
rand($minsb,$maxsb), 100);
}
$im->compositeImage($tim, Imagick::COMPOSITE_OVER,
$bw*$lx, $bh*$ly, Imagick::CHANNEL_ALL);
$tim->destroy();
}
}
$im->writeImage('sample1112a.png');
$im->destroy();
?>
<img src="sample1112a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample1112a.png)
Imagickで画像を分割してランダムに彩度を変えた画像

SVGRendererでバッジを描画する

SVGRendererでバッジを描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample988a.svg", 200, 200){
star( cx:100, cy:100, count:40, ir:80, or:90,
fill: color("#bbddff"),
borderColor: color("#103080"),
borderWidth: 2
)
}


出力SVG(sample988a.svg)をPNGでレンダリングした画像
SVGRendererで描画したバッジ

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

関連項目
groovyでバッジ画像を描画する (GraphicsRendererでの同様の処理)

Friday, June 12, 2009

im4javaで画像を絵画調に変換する

im4javaで画像を絵画調に変換するには、以下のコードを実行します。


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

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

IMOperation op = new IMOperation();
op.addImage("sf2.jpg");
op.spread(1).median(2.0).emboss(1.0);
op.addImage("sample1118a.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

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


元画像2(sf2.jpg)


出力画像(sample1118a.png)
im4javaで絵画調に変換した画像

関連情報
im4javaのまとめ

ImageMagickで画像を絵画風に変換する (convertコマンドでの同様の処理)

SVGRendererで放射ストライプを描画する

SVGRendererで放射ストライプを描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample987a.svg", 200, 200){
background(color: color("white"))
rays(cx:90, cy:110, radius:200, rays:32,
fill:color("#aaccff"), borderColor:no)
}


出力SVG(sample987a.svg)をPNGでレンダリングした画像
SVGRendererで描画した放射ストライプ

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

関連項目
groovyで放射ストライプを描画する (GraphicsRendererによる同様の処理)

Thursday, June 11, 2009

JOGLでワイヤフレームの12面体を描画する

JOGLでワイヤフレームの12面体を描画するには、以下のコードを実行します。


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

public class JoglSample4
{
// 出力画像サイズ
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)0x77/(float)0xff,
(float)0x99/(float)0xff,
(float)0xff/(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, 0.0f, -15.0f);

gl.glClear(GL.GL_COLOR_BUFFER_BIT);

gl.glPushMatrix();
// X軸回転
gl.glRotatef(45.0f, 1.0f, 0.0f, 0.0f);
// Y軸回転
gl.glRotatef(20.0f, 0.0f, 1.0f, 0.0f);
// ワイヤーフレームの十二面体を描画する
glut.glutWireDodecahedron();
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("sample1162a.png"), width, height, true);
context.release();
context.destroy();
}
}


出力画像(sample1162a.png)
JOGLで描画したワイヤーフレームの12面体

動作環境
JDK6 Upadate13, JOGL 1.1.1

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>sample1111(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 画像サイズ */
$iw=225;
$ih=200;
/* 折曲がったラベルの左上 */
$bx=0;
$by=25;
/* 折曲がったラベルのサイズ */
$bw=160;
$bh=40;
/* 角丸と吹き出し線 */
$rx=15;
$ry=15;
/* 背景色 */
$bc="none";
/* 塗りつぶし色 */
$fc="#e0e0e8ff";
/* ストローク色 */
$sc="#405080ff";
/* ストローク幅 */
$lw=2;
/* 文字色 */
$tc = "#405080ff";

$im = new Imagick();
$im->newImage($iw, $ih, $bc);
$im->setImageMatte(true);
$idraw = new ImagickDraw();
$idraw->setFillColor($fc);
$idraw->setStrokeColor($sc);
$idraw->setStrokeWidth($lw);
/* 左下の裏側部分 */
$idraw->pathStart();
$idraw->pathMoveToAbsolute(
$bx+$rx, $by+$bh-1);
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, false,
$bx+$rx, $by+$bh+$ry*2-1);
$idraw->pathFinish();

$idraw->pathStart();
/* 左上の角丸 */
$idraw->pathMoveToAbsolute($bx, $by+$ry);
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$rx, $by);
/* 上側の線 */
$idraw->pathLineToAbsolute($bx+$bw-$rx-1, $by);
/* 右上の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$bw-1, $by+$ry);
/* 右側の線 */
$idraw->pathLineToAbsolute(
$bx+$bw-1, $by+$bh-$ry-1);
/* 右下の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true,
$bx+$bw-$rx-1, $by+$bh-1);
/* 下側の線 */
$idraw->pathLineToAbsolute($bx+$rx, $by+$bh-1);
/* 左下の曲線 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, false,
$bx, $by+$bh+$ry-1);
$idraw->pathClose();

$im->drawImage($idraw);

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

/* 重ねあわせ例 */
$im2 = new Imagick();
$im2->newImage($iw, $ih, $bc);
$im3 = new Imagick("sf.jpg");
$im2->compositeImage($im3, Imagick::COMPOSITE_OVER,
$rx+$lw/2, 0, Imagick::CHANNEL_ALL);
$im2->compositeImage($im, Imagick::COMPOSITE_OVER,
0, 0, Imagick::CHANNEL_ALL);

$idraw2 = new ImagickDraw();
/* フォント設定 */
$idraw2->setFont('C:\\Windows\\Fonts\\MSGOTHIC.TTC');
/* フォントサイズ設定 */
$idraw2->setFontSize(20);
$idraw2->setFillColor($tc);
$idraw2->setStrokeColor("none");
$idraw2->annotation($bx+$rx, $by+$ry+15,
"San Francisco");
$im2->drawImage($idraw2);

$im2->writeImage('sample1111b.png');

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

</body>
</html>


元画像(sf.jpg)


出力画像1(sample1111a.png)


出力画像2(sample1111b.png)
Imagickで描画した折れ曲がったラベル

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による同様の処理)

Wednesday, June 10, 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>sample1125(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 分割数 */
$divx=3;
$divy=3;
/* 傾き角度範囲 */
$mina=-5;
$maxa=5;

$im = new Imagick("sf.jpg");
$iw = $im->getImageWidth();
$ih = $im->getImageWidth();
$im2 = new Imagick();
$im2->newImage($iw+$divx*23+10, $ih+$divy*23+10, "white");
$bw = floor($iw/$divx);
$bh = floor($ih/$divy);
$idraw = new ImagickDraw();
for($ly=0;$ly<$divy;$ly++){
for($lx=0;$lx<$divx;$lx++){
$tbw=($lx==$divx-1)?$iw-($divx-1)*$bw:$bw;
$tbh=($ly==$divy-1)?$ih-($divy-1)*$bh:$bh;
$tim = $im->clone();
$tim->cropImage($tbw, $tbh,
$bw*$lx, $bh*$ly);
$tim->setImageBackgroundColor("black");
$tim->polaroidImage($idraw, rand($mina,$maxa));
$im2->compositeImage($tim, Imagick::COMPOSITE_OVER,
($bw+23)*$lx, ($bh+23)*$ly, Imagick::CHANNEL_ALL);
$tim->destroy();
}
}
$im2->writeImage('sample1125a.png');
$idraw->destroy();
$im2->destroy();
$im->destroy();
?>
<img src="sample1125a.png" /><br />

</body>
</html>


元画像(sf.jpg)


出力画像(sample1125a.png)
分割したポラロイド写真風に変換した画像

SVGRendererでシェイプストロークを使用して図形を描画する

SVGRendererでシェイプストロークを使用して図形を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample985a.svg", 200, 200){
dolphinShape( x:0, y:20, width:200, height:160,
borderColor: color("#aaccff"),
){
shapeStroke(advance:20){
star(cx:10, cy:10, or:10, ir:7, count:5)
rect(x:5, y:5, height:10, width:10)
}
}
}


出力SVG(sample985a.svg)をPNGでレンダリングした画像
SVGRendererでシェイプストロークを使用して描画した画像

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

関連項目
groovyでシェイプストロークを使用して図形を描画する (GraphicsRendererでの同様の処理)

Tuesday, June 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>sample1110(ImageMagick6.5.2)</title>
</head>
<body>
<?php
/* 画像サイズ */
$iw=200;
$ih=200;
/* 吹き出し左上 */
$bx=25;
$by=25;
/* 吹き出しサイズ */
$bw=150;
$bh=150;
/* 角丸と吹き出し線 */
$rx=20;
$ry=20;
/* 背景色 */
$bc="none";
/* 塗りつぶし色 */
$fc="skyblue";
/* ストローク色 */
$sc="darkblue";
/* ストローク幅 */
$lw=2;

$im = new Imagick();
$im->newImage($iw, $ih, $bc);
$idraw = new ImagickDraw();
$idraw->setFillColor($fc);
$idraw->setStrokeColor($sc);
$idraw->setStrokeWidth($lw);
$idraw->pathStart();
/* 左上の角丸 */
$idraw->pathMoveToAbsolute(
$bx, $by+$ry);
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$rx, $by);
/* 上側の線 */
$idraw->pathLineToAbsolute(
$bx+$bw-$rx-1, $by);
/* 右上の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true, $bx+$bw-1, $by+$ry);
/* 右側の線 */
$idraw->pathLineToAbsolute(
$bx+$bw-1, $by+$bh-$ry-1);
/* 右下の角丸 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, true,
$bx+$bw-$rx-1, $by+$bh-1);
/* 下側の線 */
$idraw->pathLineToAbsolute(
$bx+$rx, $by+$bh-1);
/* 左下の曲線 */
$idraw->pathEllipticArcAbsolute(
$rx, $ry, 0, false, false,
$bx, $by+$bh+$ry-1);
$idraw->pathClose();

$im->drawImage($idraw);
$im->writeImage('sample1110a.png');
$im->destroy();
?>
<img src="sample1110a.png" /><br />

</body>
</html>


出力画像(sample1110a.png)
Imagickで描画した吹き出し

関連項目
ImageMagickとPHPで立体的な吹き出しを描画する
ImageMagickとPHPで半透明の吹き出しを描画する

SVGRendererで揺れのあるストロークで図形を描画する

SVGRendererで揺れのあるストロークで図形を描画するには、以下のコードを実行します。


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample984a.svg", 200, 200){
dolphinShape( x:0, y:20, width:200, height:160,
fill: color("#cceeff"),
borderColor: color("#aaccff")
){
wobbleStroke(amplitude:3, detail:2)
}
}


出力SVG(sample984a.svg)をPNGでレンダリングした画像
SVGRendererで揺れのあるストロークで描画した画像

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

関連項目
groovyで揺れのあるストロークを使用して図形を描画する (GraphicsRendererでの同様の処理)

Monday, June 08, 2009

SVGRendererで円状に文字列を描画する

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


import groovy.swing.j2d.svg.*

gr = new SVGRenderer()
gr.renderToFile("sample983a.svg", 200, 200){
xpath(borderColor:color("red")){
textStroke(text:"Groovy Groovy Groovy Groovy Groovy Groovy Groovy !!!",
font: new java.awt.Font('Tahoma', java.awt.Font.PLAIN, 20)
);
xmoveTo(x:180, y:100)
xarcTo(angle:180, largeArc: true, sweep:true, rx:80, ry:80, x:20, y:100)
xarcTo(angle:180, largeArc: true, sweep:true, rx:80, ry:80, x:180, y:100)
}
circle( cx: 100, cy: 100, radius:60, borderColor:color("orange")){
textStroke(text:"Groovy Groovy Groovy Groovy Groovy !!!",
font: new java.awt.Font('Tahoma', java.awt.Font.PLAIN, 20)
);
}
}


出力SVG(sample983a.svg)をPNGにレンダリングした画像
SVGRendererで円状に描画した文字列

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

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

im4javaで画像を2値化する

im4javaで画像を2値化するには、以下のコードを実行します。


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

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

IMOperation op = new IMOperation();
op.addImage("sf.jpg");
op.threshold().addRawArgs("55%");
op.addImage("sample1117a.png");
convert.run(op);
}
catch(CommandException cex)
{
System.out.println(cex.getErrorText());
cex.printStackTrace();
}
}

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


出力画像(sample1117a.png)
im4javaで2値化した画像

関連情報
im4javaのまとめ

Sunday, June 07, 2009

JOGLでワイヤーフレームの円柱を描画する

JOGLでワイヤーフレームの円柱を描画するには、以下のコードを実行します。


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

public class JoglSample3
{
// 出力画像サイズ
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)0x77/(float)0xff,
(float)0x99/(float)0xff,
(float)0xff/(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, -15.0f);

gl.glClear(GL.GL_COLOR_BUFFER_BIT);

gl.glPushMatrix();
// X軸回転
gl.glRotatef(-60.0f, 1.0f, 0.0f, 0.0f);
// ワイヤーフレームの円柱を描画
glut.glutWireCylinder(2.0f, 2.5f, 16, 4);
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("sample1161a.png"), width, height, true);
context.release();
context.destroy();
}
}


出力画像(sample1161a.png)
JOGLで描画したワイヤーフレームの円柱

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>sample1109(ImageMagick6.5.2)</title>
</head>
<body>
<?php
$im = new Imagick();
$im->newPseudoImage(200, 200, "radial-gradient:#7799ff-#ffffff");
$im->writeImage('sample1109a.png');
$im->destroy();
?>
<img src="sample1109a.png" /><br />

</body>
</html>


出力画像(sample1109a.png)
Imagickで描画した放射グラデーション

関連項目
ImageMagickで放射グラデーションを描画する (convertコマンドによる同様の処理)

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