Showing posts with label 重ね合わせ. Show all posts
Showing posts with label 重ね合わせ. Show all posts

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

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

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にインストール

Tuesday, January 13, 2009

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>sample737(ImageMagick6.4.4)</title>
</head>
<body>
<?php
/* 画像を縮小、回転させて背景画像と重ねあわせる */
$im = new Imagick("sf.jpg");
/* 縦横1/2にリサイズ */
$im->resizeImage($im->getImageWidth()/2,
$im->getImageHeight()/2, imagick::FILTER_MITCHELL, 1);
/* 生じるスペースの部分に透明を指定して画像を回転 */
$im->rotateImage('none', -20);
$im2 = new Imagick("sf2.jpg");
$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 170, 10, Imagick::CHANNEL_ALL);

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

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

</body>
</html>


元画像1(sf.jpg)


元画像2(sf2.jpg)


出力画像(sample737a.png)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.4

関連項目
ImageMagickとPHPで画像を半透明にして重ね合わせる
ImageMagickとPHPで、画像に半透明角丸四角の枠をつける

Thursday, January 08, 2009

librsvgを使用して画像を半透明にして重ね合わせる

librsvgを使用して画像を半透明にして重ね合わせるには、以下のsvgファイルを処理します。


<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="200" height="200">
<image x="0" y="0" width="200" height="200"
xlink:href="sf.jpg" >
<title>sf.jpg</title>
</image>
<image x="10" y="10" width="100" height="100"
xlink:href="sample3b.jpg" opacity="0.5">
<title>sample3b.jpg</title>
</image>
</svg>


コマンド
rsvg-convert image-opacity.svg -f png -o sample746a.png

元画像1(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample746a.png)


○関連項目
librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。

Saturday, December 13, 2008

GMICを使用して画像を重ね合わせる

GMICを使用して画像を重ね合わせるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set gmic=C:\share\gmic-0.8

rem 50,50の位置で重ね合わせ
%gmic%\gmic.exe sf.jpg sample3b.jpg -draw[0] [1],50,50 -remove[1] -o sample709a.png

rem 10,90,0の位置で透明度0.5で重ね合わせ
%gmic%\gmic.exe sf.jpg sample3b.jpg -draw[0] [1],10,90,0,0.5 -remove[1] -o sample709b.png

元画像1(sf.jpg)


元画像2(sample3b.jpg)


出力画像1(sample709a.png)


出力画像2(sample709b.png)


関連項目
G'MICのホームページ

Friday, October 03, 2008

Python Imaging Libraryを使用して画像を重ね合わせる

Python Imaging Libraryを使用して画像を重ね合わせるには、以下のコードを実行します。

# coding=UTF-8
import Image
# 画像の合成
img1 = Image.open("sf.jpg")
img2 = Image.open("sample6.jpg")
img1.paste(img2, (10,10))
img1.save("sample529.jpg")

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample529.jpg)


関連情報
Python Imaging Libraryまとめ

Saturday, September 06, 2008

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>sample552(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* プラズマフラクタル画像を用いて画像に濃淡をつける */
$im = new Imagick("sf.jpg");

/* プラズマフラクタル画像 */
$im2 = new Imagick();
$im2->newPseudoImage(200, 200, 'plasma:fractal');
$im3 = $im2->fxImage("intensity");
$im3->contrastImage(false);
$im3->contrastImage(false);

/* overlayで重ね合わせ */
$im->compositeImage($im3, Imagick::COMPOSITE_OVERLAY, 0, 0, Imagick::CHANNEL_ALL);


$im->writeImage('sample552a.jpg');
/* $im3->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im3->destroy();
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>
<img src="sample552a.jpg" />

</body>
</html>

元画像(sf.jpg)


出力画像(sample552a.jpg)


関連項目
ImageMagickで、画像にプラズマフラクタル画像を重ね合わせて濃淡をつける (Convertコマンドでの同様の処理)

Monday, August 18, 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>sample536(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 半透明の円形に画像を切り取って、ほかの画像と重ね合わせる */
$im = new Imagick('sf2.jpg');
/* 角丸四角のマスクを作成 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "none");
$idraw = new ImagickDraw();
$idraw->setFillColor('#ffffff');
$idraw->ellipse(130,110,100,100,0,360);
$im2->drawImage($idraw);
$im2->blurImage(10, 10, Imagick::CHANNEL_ALL);
/* マスクを使用して切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);
$im2->resizeImage(200, 225*200/300, imagick::FILTER_MITCHELL, 1);

/* 別の画像 */
$im3 = new Imagick('sf.jpg');
$im3->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, -10, -10);

$im3->writeImage('sample536a.jpg');
/* $idraw->clear(); 2008/09/30追記:destroyと同様にClearDrawingWandを呼ぶので必要なし */
$idraw->destroy();
/* $im3->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im3->destroy();
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>

<img src="sample536a.jpg" />

</body>
</html>

元画像(sf.jpg)


元画像(sf.jp2g)


出力画像(sample536a.jpg)

Monday, August 04, 2008

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

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

import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;

public class Java2DTest11
{
public static void main(String args[])
throws Exception
{
/* Java2Dで画像を半透明に重ね合わせる */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
BufferedImage img2 = ImageIO.read(new File("sample6.jpg"));
Graphics2D gr = img.createGraphics();
gr.setComposite(
AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.4F)
);
gr.drawImage(img2,10,70,null);
gr.dispose();
ImageIO.write(img, "jpg", new File("sample521a.jpg"));
}
}

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample521a.jpg)


環境
JDK6 Upadate6(JDK1.6.0_06)

関連項目
Java2Dで画像を重ね合わせる

Friday, July 11, 2008

Java2Dで画像を重ね合わせる

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

import java.io.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;

public class Java2DTest5
{
public static void main(String args[])
throws Exception
{
/* 画像の重ね合わせ */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
BufferedImage img2 = ImageIO.read(new File("sample6.jpg"));
Graphics2D gr = img.createGraphics();
gr.drawImage(img2,10,10,null);
gr.dispose();
ImageIO.write(img, "jpg", new File("sample496a.jpg"));
}
}

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample496a.jpg)


環境
JDK6 Upadate6(JDK1.6.0_06)

関連項目
Java2Dで画像を半透明に重ね合わせる

Tuesday, June 03, 2008

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>sample407</title>
</head>
<body>
<?php
/* 画像に半透明角丸四角の枠をつけて重ね合わせ */
$im = new Imagick('sf.jpg');
/* 縦横50%の大きさにリサイズ */
$sx = $im->getImageWidth()/2;
$sy = $im->getImageHeight()/2;
$im->resizeImage($sx, $sy, imagick::FILTER_MITCHELL, 1);
/* 画像を半透明に */
$im->setImageOpacity(0.7);

/* 背景用画像を読み込み */
$im2 = new Imagick('sf2.jpg');
/* 背景用画像と重ね合わせ */
$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 150, 100);
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
$im2->writeImage('sample407a.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
?>

<img src="sample407a.jpg" />

</body>
</html>

元画像1(sf.jpg)


元画像2(sf2.jpg)


出力画像(sample407a.jpg)


環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)
ImageMagickとPHPで半透明の文字列を描画する
ImageMagickとPHPで画像の上に半透明四角と半透明角丸四角を描画する
ImageMagickとPHPで、画像に半透明角丸四角の枠をつける
ImageMagickとPHPで画像を縮小・回転させて他の画像と重ね合わせる

Saturday, May 17, 2008

JMagickで、画像を重ね合わせる

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

import magick.*;

public class JMagickTest5
{
public static void main(String args[])
throws MagickException
{
/* 画像を重ね合わせる */
MagickImage mi1 = new MagickImage(new ImageInfo("sf.jpg"));
MagickImage mi2 = new MagickImage(new ImageInfo("sample6.jpg"));
mi1.compositeImage(CompositeOperator.SrcOverCompositeOp,mi2,20,20);
mi1.setFileName("sample426a.jpg");
mi1.writeImage(new ImageInfo());
}
}

元画像1(sf.jpg)


元画像2(sample6.jpg)


出力画像(sample426a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで画像を半透明にして重ね合わせる

Monday, April 28, 2008

WindowsでImageMagickをPHPから使用するための設定

WindowsでImageMagickをPHPから使用するためには、以下の設定を行います。

環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.0

1. ImageMagickをインストール。Program Files配下などのスペースを含むパスにインストールしないこと。(例:c:\ImageMagick640Q16など)

2. Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)のインストール
http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=ja
上記URLからダウンロードして、インストール。

3.php_imagickのインストール
以下のURLのMikko's blogからphp_imagick_dyn-Q16.dllをダウンロード。
http://valokuva.org/?page_id=50
php_imagick_dyn-Q16.dllをPHPのextディレクトリにコピー。

4. php.iniに以下の設定を追加(パスは環境に合わせて変更してください)
extension_dir = "C:\PHP525\ext"
extension=php_imagick_dyn-Q16.dll

5. OSのシステム環境変数にMAGICK_HOMEという環境変数名で
ImageMagickをインストールしたパスを指定。(例:C:/ImageMagick640Q16)

6. Windowsを再起動。

7. 以下の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>sample372</title>
</head>
<body>
<?php
$first = new Imagick('sf.jpg');
$second = new Imagick('sample3b.jpg');
$first->compositeImage($second, Imagick::COMPOSITE_DEFAULT, 10, 10);
$first->writeImage('sample372a.jpg');
?>

<img src="sample372a.jpg" />
</body>
</html>

元画像1(sf.jpg)


元画像2(sample3b.jpg)


出力画像(sample372a.jpg)


2009/05/04追記
「Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ」は「Microsoft Visual C++ 2008 Redistributable」でも動作する。
動作環境
Microsoft Windows 2003 Server SP2, Apache2.2.11, PHP5.2.9-2, ImageMagick6.5.2-0


2010/08/05追記
以下のページのDLLを使用して、XAMPP1.7.3でも動作する。
http://www.sk89q.com/2010/03/vc6-windows-binaries-for-imagick-2-3-0/
動作環境
Microsoft Windows 2003 Server SP2, XAMPP 1.7.3, ImageMagick6.6.3-2-Q16

Sunday, April 13, 2008

ImageMagickで、透過PNGを半透明にして重ね合わせる

透過PNGを半透明にして重ね合わせるには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe sf.jpg -matte -channel rgba ( sample2.png -matte -channel a -fx "(p.r+p.g+p.b)>0?0.25:0" ) -geometry +10+10 -composite ( sample2.png -matte -channel a -fx "(p.r+p.g+p.b)>0?0.5:0" ) -geometry +20+20 -composite ( sample2.png -matte -channel a -fx "(p.r+p.g+p.b)>0?0.75:0" ) -geometry +30+30 -composite sample2.png -geometry +40+40 -composite sample359.png

上記バッチファイルでは、以下の処理を実行しています。
1. 元画像2を読み込む。
2. 元画像1を読み込み、alphaに0.25を設定し、縦横10ピクセルずらして、重ね合わせ。
3. 元画像1を読み込み、alphaに0.5を設定し、縦横20ピクセルずらして、重ね合わせ。
4. 元画像1を読み込み、alphaに0.75を設定し、縦横30ピクセルずらして、重ね合わせ。
6. 元画像1を読み込み、縦横40ピクセルずらして重ね合わせ。

元画像1(sample2.png)


元画像2(sf.jpg)


出力画像(sample359.png)

Wednesday, February 20, 2008

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

画像に半透明の濃淡をつけて重ね合わせるには、以下のバッチファイルを
実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.8-Q16
rem 画像に半透明の濃淡をつける
%im%\convert.exe -seed 65535 -size 200x200 plasma:fractal -fx "luminosity" -matte -channel a -fx "r" -channel rgba sf.jpg -compose src_in -composite sample314a.png
rem 市松模様と重ね合わせ
%im%\convert.exe -size 200x200 pattern:checkerboard sample314a.png -composite sample314b.png

元画像(sf.jpg)


出力画像(sample314a.png)


重ね合わせ例(sample314b.png)


2008/07/13追記
ver6.4.0あたりからluminosityからlightnessに変わったので、以下のバッチを実行します。
rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.2-Q16
%im%\convert.exe -seed 65535 -size 200x200 plasma:fractal -fx "lightness" -matte -channel a -fx "r" -channel rgba sf.jpg -compose src_in -composite sample314a.png
%im%\convert.exe -size 200x200 pattern:checkerboard sample314a.png -composite sample314b.png

関連項目
ImageMagickで、任意の2色グラデーションのプラズマ・フラクタル画像を生成する
ImageMagickで、乱数のシード値を設定する
im4javaで画像に半透明の濃淡をつける (im4javaによる同様の処理)

Thursday, February 14, 2008

ImageMagickで、凹んだ影つき円を描画する

凹んだ影つき円を描画するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.7-Q16
%im%\convert.exe sf.jpg -matte -channel rgba ( -size 200x200 xc:none -fill white -draw "ellipse 100,100,90,90,0,360" -negate -fx "p!=1?0:#F0F0D0FF" ) ( +clone -background #000000 -shadow 70x8+5+5 ) +swap -mosaic -crop 200x200+0+0 sample307.jpg

元画像(sf.jpg)


出力画像(sample307.jpg)



関連項目
ImageMagickで凹んだ影付き角丸四角を描画する