Showing posts with label 2値化. Show all posts
Showing posts with label 2値化. Show all posts

Monday, April 20, 2009

ScriptomとImageMagickで画像を2値化する

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

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
im = new ActiveXObject("ImageMagickObject.MagickImage.1")
im.convert("sf.jpg", "-threshold", "60%", "sample1062a.png")
}

元画像(sf.jpg)



出力画像(sample1062a.png)
Scriptomとgroovyで2値化した画像

関連項目
ScriptomとImageMagickで画像を反転させる

Monday, April 06, 2009

ImageMagickとPHPで、2値化した画像を半透明グラデーションにする

Imagickで、2値化した画像を半透明グラデーションにするには、以下のコードを実行します。

<!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>sample925(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 2値化した画像を半透明グラデーションにする */
$im = new Imagick("tree1.jpg");
$im->setImageMatte(true);
$im->blackThresholdImage('#808080');
$im->whiteThresholdImage('#808080');
$im->paintTransparentImage("white", 0, 0);
$im->paintOpaqueImage("black", "white", 0);

/* 半透明グラデーション */
$im2 = new Imagick();
$im2->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), "gradient:#ffffffff-#00000000");
/* 切り取り */
$im2->compositeImage($im, Imagick::COMPOSITE_IN, 0, 0,
Imagick::CHANNEL_ALL);
$im2->writeImage('sample925a.png');

/* 市松模様と重ね合わせ */
$im3 = new Imagick();
$im3->newPseudoImage($im->getImageWidth(),
$im->getImageHeight(), "pattern:CHECKERBOARD");

$im3->compositeImage($im2, Imagick::COMPOSITE_OVER, 0, 0,
Imagick::CHANNEL_ALL);
$im3->writeImage('sample925b.png');

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

</body>
</html>

出力画像(sample925b.png)


関連項目
ImageMagickで、2値化した画像を半透明グラデーションにする (convertコマンドによる同様の処理)
ImageMagickとPHPで、画像の2値化を行う

Wednesday, April 01, 2009

ImageMagickとPHPで、画像を2値化して任意の色と透明色にかえる

Imagickで、画像を2値化して任意の色と透明色にかえるには、以下のコードを実行します。

<!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>sample911(ImageMagick6.4.8)</title>
</head>
<body>
<?php
/* 画像を2値化して、任意の色と透明色にかえる */

$im = new Imagick("tree1.jpg");
$im->setImageMatte(true);
$im->blackThresholdImage('#808080');
$im->whiteThresholdImage('#808080');
$im->paintTransparentImage("white", 0, 0);
$im->paintOpaqueImage("black", "#88aaff", 0);
$im->writeImage('sample911a.png');


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

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

$im2->writeImage('sample911b.png');
$im2->destroy();
$im->destroy();
?>
<img src="sample911a.png" /><br />
<img src="sample911b.png" /><br />

</body>
</html>


元画像(tree1.jpg)


出力画像1(sample911a.png)


出力画像2(sample911a.png)


関連項目
ImageMagickで、2値化した画像を透明に設定したり、色を変える
ImageMagickとPHPで2値化して光が溢れるような画像に変換する
ImageMagickとPHPで画像の輪郭を影で浮かび上がらせた画像を生成する

Thursday, February 19, 2009

RMagickで画像を2値化で切り取って、白背景でぼかす

RMagickで画像を2値化で切り取って、白背景でぼかすには、以下のコードを実行します。

require 'RMagick'
include Magick

# 画像を2値化して切り取って白背景と合成してからぼかす
images1 = ImageList.new("sample5r.jpg")
images1[0] = images1.threshold(MaxRGB*0.85).negate(true)
images1.alpha = ActivateAlphaChannel
images1[0] = images1.fx("p.r==1?1:0", AlphaChannel)
images2 = ImageList.new("sample5r.jpg")
img = images1.composite(images2, 0, 0, SrcInCompositeOp);
img2 = Image.new(img.columns, img.rows){
self.background_color = "white"
}
img3 = img2.composite(img, CenterGravity, 0, 0, OverCompositeOp);
img4 = img3.blur_channel(0, 2, ChannelType::AllChannels)

img4.write("sample778a.png")

exit
元画像(sample5r.jpg)


出力画像(sample778a.png)


動作環境
ruby1.8.6, rmagick2.7.1

関連項目
ImageMagickで、2値化して画像を切り取って白背景でぼかす (convertコマンドでの同様の処理)

Tuesday, July 29, 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>sample515(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* エッジ抽出 + normalize + 任意の2色のグラデーションで色替え */
$im = new Imagick('sf2.jpg');
$im->edgeImage(2);
$im->normalizeImage();
$im2 = new Imagick();
/* 任意の2色のグラデーションで色替え */
$im2->newPseudoImage(1, 2, 'gradient:#ffffff-#bbddff');
$im->addImage($im2);
$im->setImageIndex(0);
$im3 = $im->fxImage("v.p{0,lightness}");

$im3->writeImage('sample515a.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="sample515a.jpg" />

</body>
</html>

元画像(sf2.jpg)


出力画像(sample515a.jpg)


動作環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickとPHPでエッジ抽出をおこなう

Wednesday, July 16, 2008

RMagickで閾値を使用して切り取った画像に影付けをする

RMagickで閾値を使用して切り取った画像に影付けをするには、以下のコードを実行します。

require 'RMagick'
include Magick

# 画像を2値化して切り取り
img1 = ImageList.new("sample5.jpg")
img2 = img1.threshold(QuantumRange*0.84)
img3 = img2.transparent("white");
img4 = ImageList.new("sample5.jpg")
img4.alpha = ActivateAlphaChannel
img5 = img4.composite(img3, 0, 0, DstInCompositeOp);

# 影付け
img5.background_color = "black"
img6 = img5.shadow(3, 3, 3, 0.4)
img7 = img6.composite(img5, 0, 0, OverCompositeOp);
# 白背景と合成
bg = Image.new(img7.columns, img7.rows){
self.background_color='white'
}
img8 = bg.composite(img7, 0, 0, OverCompositeOp);

img8.write("sample501a.png")
exit

元画像(sample5.jpg)


出力画像(sample501a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
ImageMagickで閾値を使用して切り取った画像に影付けする

Saturday, July 12, 2008

ImageMagickとPHPで2値化して光が溢れるような画像に変換する

Imagickで2値化して光が溢れるような画像に変換するには、以下のコードを実行します。

<!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>sample497(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 2値化して光が溢れるような画像に変換する */
/* 2値化してマスク作成 */
$im = new Imagick('tree1.jpg');
$im->blackThresholdImage('#808080');
$im->whiteThresholdImage('#808080');
/* 反転 */
$im->negateImage(true);
$im->paintTransparentImage("black", 0, 0);
/* アルファチャネルをぼかす */
$im->blurImage(20, 10, Imagick::CHANNEL_ALPHA);

/* マスクを利用して切り取り */
$im2 = new Imagick('tree1.jpg');
$im->compositeImage($im2, Imagick::COMPOSITE_IN, 0, 0, Imagick::CHANNEL_ALL);

/* 白背景と合成 */
$im3 = new Imagick();
$im3->newPseudoImage($im->getImageWidth(), $im->getImageHeight(), "xc:white");
$im3->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 0, 0);

$im3->writeImage('sample497a.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="sample497a.jpg" />

</body>
</html>

元画像(tree1.jpg)


出力画像(sample497a.jpg)


動作環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2

関連項目
ImageMagickで、2値化して光が溢れるような画像に変換する (Convertコマンドでの同様の処理)
ImageMagickで、光が溢れるぼかし画像に変換する

Thursday, June 19, 2008

Rmagickで画像を2値化し、半分を反転させる

Rmagickで画像を2値化し、半分を反転させるには、以下のコードを実行します。

require 'RMagick'
include Magick

img1 = ImageList.new("tree1.jpg")
img1 = img1.threshold(QuantumRange*0.5)
img2 = img1.crop(0, 0, img1.columns/2, img1.rows)
img1 = img1.negate()
img3 = img1.composite(img2, NorthWestGravity, 0, 0, OverCompositeOp);
img3.write("sample469a.png")

exit

元画像(tree1.jpg)


出力画像(sample469a.png)


動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8

関連項目
RMagickをWindowsで使用するための設定

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コマンドで同様の処理を実行)

Sunday, May 25, 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>sample459(ImageMagick6.4.1)</title>
</head>
<body>
<?php
/* IMagickで画像の輪郭を影で浮かび上がらせた画像を生成する */
$im = new Imagick('tree1.jpg');
$im->blackThresholdImage('#808080');
$im->whiteThresholdImage('#808080');
/* 白色を青っぽい色に色を変換 */
$im->paintOpaqueImage("#ffffff", "#3070a0", 0);
/* 黒色を白色に変換 */
$im->paintOpaqueImage("#000000", "#ffffff", 0);
$im->blurImage(0,5);
$im2 = new Imagick('tree1.jpg');
$im2->blackThresholdImage('#808080');
$im2->whiteThresholdImage('#808080');
/* 白色を透明に変換 */
$im2->paintTransparentImage("#ffffff", 0, 0);
/* 黒色を青っぽい色に変換 */
$im2->paintOpaqueImage("#000000", "#3070a0", 0);
$im->compositeImage($im2, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im->writeImage('sample459a.jpg');
/* $im2->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im2->destroy();
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();

?>

<img src="sample459a.jpg" />

</body>
</html>

元画像(tree1.jpg)


出力画像(sample459a.jpg)


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

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)
ImageMagickで、画像の輪郭を影で浮かび上がらせた画像を生成する(Convertコマンドで同様の処理)

Friday, May 23, 2008

JMagickで画像の輪郭を影で浮かび上がらせた画像を生成する

JMagickで画像の輪郭を影で浮かび上がらせた画像を生成するには、以下のコードを実行します。

import magick.*;

public class JMagickTest31
{
public static void main(String args[])
throws MagickException
{
MagickImage mi = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi.thresholdImage(40000);
/* 白色を水色に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("white"),
new PixelPacket(0x30*256, 0x70*256, 0xa0*256, 0)
);
/* 黒色を白色に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("black"),
PixelPacket.queryColorDatabase("white")
);
/* ぼかし */
MagickImage mi2 = mi.blurImage(0, 3);

MagickImage mi3 = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi3.thresholdImage(40000);
/* 白色を透明に変換 */
mi3.opaqueImage(
PixelPacket.queryColorDatabase("white"),
new PixelPacket(65535, 65535, 65535, 65535)
);
/* 黒色を水色に変換 */
mi3.opaqueImage(
PixelPacket.queryColorDatabase("black"),
new PixelPacket(0x30*256, 0x70*256, 0xa0*256, 0)
);

mi2.compositeImage(CompositeOperator.SrcOverCompositeOp,mi3,0,0);

mi2.setFileName("sample451a.png");
mi2.writeImage(new ImageInfo());
}
}

元画像(tree1.jpg)


出力画像(sample451a.png)


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


関連情報
JMagickまとめ
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする
ImageMagickで、画像の輪郭を影で浮かび上がらせた画像を生成する (Convertコマンド)

Thursday, May 22, 2008

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

JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にするには以下のコードを実行します。

import magick.*;

public class JMagickTest29
{
public static void main(String args[])
throws MagickException
{
/* 2値化した画像の黒色部分を水色に、白色部分を透明にする */
MagickImage mi = new MagickImage(new ImageInfo("tree1.jpg"));
/* 画像を2値化 */
mi.thresholdImage(32767);
/* 黒色を水色に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("black"),
new PixelPacket(0xbb*256, 0xdd*256, 0xff*256, 0)
);
/* 白色を透明に変換 */
mi.opaqueImage(
PixelPacket.queryColorDatabase("white"),
new PixelPacket(65535, 65535, 65535, 65535)
);
mi.setFileName("sample449a.png");
mi.writeImage(new ImageInfo());

/* 市松模様と重ね合わせ */
ImageInfo ii = new ImageInfo("pattern:checkerboard");
ii.setSize(mi.getDimension().getWidth() + "x" +
mi.getDimension().getHeight());
MagickImage mi2 = new MagickImage(ii);
mi2.compositeImage(CompositeOperator.SrcOverCompositeOp,mi,0,0);
mi2.setFileName("sample449b.png");
mi2.writeImage(new ImageInfo());
}
}

出力画像(sample229a.png)


出力画像(sample229b.png)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickでビルトインパターンの画像を生成する
JMagickで画像を2値化する

Tuesday, May 20, 2008

JMagickで画像を2値化する

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

import magick.*;

public class JMagickTest24
{
public static void main(String args[])
throws MagickException
{
/* 画像を2値化する */
MagickImage mi = new MagickImage(new ImageInfo("sf.jpg"));
mi.thresholdImage(40000);
mi.setFileName("sample444a.jpg");
mi.writeImage(new ImageInfo());
}
}

元画像(sf.jpg)


出力画像(sample444a.jpg)


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


関連情報
JMagickまとめ
ImageMagickをJavaから使用するための設定(JMagickインストール)
JMagickで2値化した画像の黒色部分の色を変え、白色分を透明にする

Friday, May 09, 2008

ImageMagickとPHPで、画像の2値化を行う

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

<!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>sample381</title>
</head>
<body>
<?php
/* 2値化 */
$im = new Imagick('sf.jpg');
$im->blackThresholdImage('#808080');
$im->whiteThresholdImage('#808080');
$im->writeImage('sample382a.png');
/* $im->clear(); 2008/09/30追記:destroyと同様にClearMagicWandを呼ぶので必要なし */
$im->destroy();
?>
<img src="sample382a.png" />
</body>
</html>

上記の例ではblackThresholdImageメソッドとwhiteThresholdImageメソッドを使用して画像を2値化しています。

元画像(sf.jpg)


出力画像(sample382a.png)


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

関連項目
WindowsでImageMagickをPHPから使用するための設定 (Imagickの設定)

Tuesday, April 22, 2008

ImageMagickで、2値化した画像をストライプにする

2値化した画像をストライプにするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe tree1.jpg -threshold 50%% -negate -matte -transparent black -fill #3070A0FF -opaque white -channel rgba -fx "j%%2==0?p:0" sample365a.png
rem 重ね合わせ例
%im%\convert.exe tree1.jpg ( sample365a.png -channel a -fx "p!=0?0.5:0" ) -composite sample365b.png

上記バッチファイルでは、以下の処理を実行しています。
1. 50%の閾値で2値化、反転(-negate)、黒色部分を透明に(-transparent black)、白色部分を#3070aoffという色に変換。偶数ピクセルの値を0に変換。
2. 元画像(tree1.jpg)と1の出力画像のアルファ値を0.5にした画像を重ね合わせ。

元画像(tree1.jpg)


出力画像(sample365a.png)

Monday, April 07, 2008

ImageMagickで、2値化した画像を半透明グラデーションにする

2値化した画像を半透明グラデーションにするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe tree1.jpg -threshold 50%% -negate -matte -channel rgba -fill #00000000 -transparent #000000ff -channel a -fx "p.r>0?(h-j)/h:0" sample355a.png
rem 重ねあわせ例
%im%\convert.exe -size 300x225 pattern:checkerboard sample355a.png -composite sample355b.jpg

上記バッチでは、以下の処理を実行しています。
1. 画像を50%の閾値で2値化し、反転。
2. 黒色部分を透明にし、アルファチャネルで黒色以外の部分を-fxを使用して縦グラデーションにしています。
3. 市松模様と生成した半透明グラデーションを重ね合わせ。

元画像(tree1.jpg)


出力画像(sample355b.jpg)

Sunday, April 06, 2008

ImageMagickで、画像を2値化して白色部分は元画像のままで黒色部分は影付けした画像を生成する

画像を2値化して白色部分は元画像のままで黒色部分は影付けした画像を生成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.9-Q16
%im%\convert.exe tree1.jpg -modulate 80 ( tree1.jpg -threshold 50%% -matte -channel rgba -fill #ffffff00 -transparent #ffffffff ) ( +clone -background #1070F8 -shadow 100x2+0+0 ) -swap 1,2 -mosaic -crop 300x225+0+0 sample354a.jpg

上記バッチでは、以下の処理を実行しています。
1. 画像の明度を80%に処理(-modulate 80)。
2. 2値化して白色部分を透明に処理。
3. 2の結果を複製して、青っぽい色で影付け。
4. 重ね合わせ後、-cropで元サイズで切り取り。

元画像(sf.jpg)


出力画像(sample354a.jpg)


関連項目
ImageMagickで、画像の輪郭を影で浮かび上がらせた画像を生成する

Tuesday, March 04, 2008

ImageMagickで、2値化で切り取った画像に半透明の輪を描画する

2値化で切り取った画像に半透明の輪を描画するには以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.8-Q16
%im%\convert.exe -size 100x100 xc:none -matte -channel rgba -fill none -stroke #bbddff80 -strokewidth 5 -draw "ellipse 50,50,45,45,0,360" -virtual-pixel transparent -distort Perspective "0,0 25,25 0,100 -20,75 100,100 120,75 100,0 75,25" ( +clone -fx "j>=h/2?p:0" -write sample328b.png ) +delete -fx "j<h/2?p:0" sample328a.png
%im%\convert.exe sample5r.jpg -threshold 53000 -negate -matte -channel rgba -fill #00000000 -transparent #000000ff sample5r.jpg -compose src_in -composite sample328a.png +swap -compose src_over -composite sample328b.png -composite sample328c.png

元画像(sample5r.jpg)


中間画像(sample328b.png)


中間画像(sample328a.png)


出力画像(sample328c.png)

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値化した画像の黒色部分の色を変え、白色分を透明にする

ImageMagickで、2値化した画像の背景をバンド状のグラデーションにする

2値化した画像の背景をバンド状のグラデーションにするには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.3.8-Q16
%im%\convert.exe tree1.jpg -threshold 50%% -matte -channel rgba -fill #00000000 -transparent #000000ff ( -size 1x1 xc:#3070A0FF xc:#FFFF10FF -append -resize 1x8! -filter Point -resize 300x225! ) -compose src_in -composite sample326a.png

元画像(tree1.jpg)


出力画像(sample326a.png)


関連項目
ImageMagickで2値化したのちグラデーションで塗りつぶす