RMagickで画像の四隅を切り取るには、以下のコードを実行します。
require 'RMagick'
include Magick
# 四隅切り取りサイズ
px = 20
py = 20
# 画像読み込み
images = ImageList.new("sf2.jpg")
# マスク作成
mask = Image.new(images[0].columns, images[0].rows){
self.background_color = "none"
}
idr = Draw.new
idr.polygon(px, 0, images[0].columns-1-px, 0,
images[0].columns-1, py, images[0].columns-1, images[0].rows-1-px,
images[0].columns-1-px, images[0].rows-1, px, images[0].rows-1,
0, images[0].rows-1-py, 0, py)
idr.draw(mask);
# マスクを利用して切り取り
img2 = mask.composite(images[0], 0, 0, SrcInCompositeOp)
# 背景用画像
bg = Image.new(images[0].columns, images[0].rows){
self.background_color = "white"
}
img3 = bg.composite(img2, CenterGravity, 0, 0, OverCompositeOp);
img3.write("sample655a.png")
exit
元画像(sf2.jpg)
出力画像(sample655a.png)
動作環境
ruby1.8.6-26/RMagick-2.3.0-ImageMagick-6.4.0-2-Q8
関連項目
RMagickで画像を角丸四角に切り取る
ImageMagickで画像の四隅を切り取る (Convertコマンドでの同様の処理)
Saturday, October 18, 2008
librsvgでぼかした四角を描画する
librsvgでぼかした四角を描画するには、以下のsvgファイルを処理します。
コマンド
rsvg-convert filter-gaussian-blur.svg -f png -o sample682.png
出力画像(sample682.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・librsvgで四角を描画する
・libsvgに関する他の記事はこちらを参照してください。
<?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"
width="300" height="300">
<defs>
<filter id="gbf">
<feGaussianBlur in="SourceGraphic" stdDeviation="5" />
</filter>
</defs>
<rect x="50" y="50" width="200" height="200"
style="fill:#bbddff; filter:url(#gbf)"/>
</svg>
コマンド
rsvg-convert filter-gaussian-blur.svg -f png -o sample682.png
出力画像(sample682.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・librsvgで四角を描画する
・libsvgに関する他の記事はこちらを参照してください。
GMICを使用して画像を白黒化する
Friday, October 17, 2008
GMICを使用して、画像を白黒ドット画像に変換する
Python Imaging Libraryを使用して、エッジ抽出を行う
Python Imaging Libraryを使用してエッジ抽出を行うには、以下のコードを実行します。
# coding=UTF-8
import Image
import ImageFilter
# 画像の輪郭抽出する
img1 = Image.open("sf.jpg")
img2 = img1.filter(ImageFilter.FIND_EDGES)
img2.save("sample622a.jpg")
元画像(sf.jpg)
出力画像(sample622a.jpg)
関連情報
Python Imaging Libraryまとめ
# coding=UTF-8
import Image
import ImageFilter
# 画像の輪郭抽出する
img1 = Image.open("sf.jpg")
img2 = img1.filter(ImageFilter.FIND_EDGES)
img2.save("sample622a.jpg")
元画像(sf.jpg)
出力画像(sample622a.jpg)
関連情報
Python Imaging Libraryまとめ
librsvgを使用して画像を描画する
librsvgを使用して画像を描画するには、以下のsvgファイルを処理します。
コマンド
rsvg-convert image.svg -f png -o sample681.png
元画像(sf.jpg)
出力画像(sample681.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
<?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="300" height="300">
<image x="50" y="50" width="200px" height="200px"
xlink:href="./sf.jpg">
<title>sf.jpg</title>
</image>
</svg>
コマンド
rsvg-convert image.svg -f png -o sample681.png
元画像(sf.jpg)
出力画像(sample681.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
Thursday, October 16, 2008
GMICを使用して画像に放射ブラーをかける
Java2DとJava Image Filters(pixels)を使用して画像をタイル状に配置する
Java2DとJava Image Filters(pixels)を使用して画像をタイル状に配置するには、以下のコードを実行します。
元画像(flower1.png)
出力画像(sample654a.jpg)
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest58
{
public static void main(String args[])
throws Exception
{
/* 画像をタイル状に配置する */
BufferedImage img = ImageIO.read(new File("flower1.png"));
BufferedImage img2 = new BufferedImage(
200, 150, BufferedImage.TYPE_INT_RGB
);
TileImageFilter tif = new TileImageFilter(img2.getWidth(), img2.getHeight());
img2 = tif.filter(img, img2);
ImageIO.write(img2, "jpg", new File("sample654a.jpg"));
}
}
元画像(flower1.png)
出力画像(sample654a.jpg)
関連項目
Jerry Huxtableさんのホームページ
Java Image Filtersのページ
java.netでのプロジェクトページ
librsvgで放射グラデーションを描画する
librsvgで放射グラデーションを描画するには、以下のsvgファイルを処理します。
コマンド
rsvg-convert radial-gradient.svg -f png -o sample680.png
出力画像(sample680.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
<?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"
width="200" height="200">
<defs>
<radialGradient id="rg" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color: #bbddff" />
<stop offset="100%" style="stop-color: #ffffff" />
</radialGradient>
</defs>
<rect x="50" y="50" width="100" height="100"
style="fill:url(#rg)"/>
</svg>
コマンド
rsvg-convert radial-gradient.svg -f png -o sample680.png
出力画像(sample680.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
Wednesday, October 15, 2008
ImageMagickとPHPで画像をビデオ風にする - その2
Imagickで画像をビデオ風にするには、以下のコードを実行します。
以下のコードではfxImageを使用しないで偶数ラインを暗くしています。
元画像(sf.jpg)
出力画像(sample589a.jpg)
環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2
関連項目
ImageMagickとPHPで画像をビデオ風に変換する
以下のコードではfxImageを使用しないで偶数ラインを暗くしています。
<!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>sample589(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像をビデオ風に変換する */
$im = new Imagick("sf.jpg");
$it = $im->getPixelIterator();
foreach($it as $py => $line){
if( $py%2 == 0 ){
foreach($line as $px => $pixel){
$pr = $pixel->getColorValue(Imagick::COLOR_RED);
$pg = $pixel->getColorValue(Imagick::COLOR_GREEN);
$pb = $pixel->getColorValue(Imagick::COLOR_BLUE);
$pixel->setColorValue(Imagick::COLOR_RED, $pr/2);
$pixel->setColorValue(Imagick::COLOR_GREEN, $pg/2);
$pixel->setColorValue(Imagick::COLOR_BLUE, $pb/2);
}
}
$it->syncIterator();
}
$im->writeImage('sample589a.jpg');
$im->destroy();
?>
<img src="sample589a.jpg" />
</body>
</html>
元画像(sf.jpg)
出力画像(sample589a.jpg)
環境
Apache 2.2.8/PHP5.2.5/ImageMagick6.4.2
関連項目
ImageMagickとPHPで画像をビデオ風に変換する
rsvgでグラデーションを描画する
rsvgでグラデーションを描画するには、以下のsvgファイルを処理します。
rsvg-convert linear-gradient.svg -f png -o sample679.png
出力画像(sample679.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
<?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"
width="200" height="200">
<defs>
<linearGradient id="lg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color: #ffffff" />
<stop offset="100%" style="stop-color: #bbddff" />
</linearGradient>
</defs>
<rect x="50" y="50" width="150" height="150"
style="fill:url(#lg)"/>
</svg>
コマンドrsvg-convert linear-gradient.svg -f png -o sample679.png
出力画像(sample679.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
Tuesday, October 14, 2008
Java2DとJava Image Filters(pixels)を使用して画像をライトで照らしたようなイフェクトをかける
Java2DとJava Image Filters(pixels)を使用して画像をライトで照らしたようなイフェクトをかけるには、以下のコードを実行します。
以下のコードでは、青色と赤色のライトの位置をずらして、画像を照らしています。
元画像(sf2.jpg)
出力画像(sample588a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
以下のコードでは、青色と赤色のライトの位置をずらして、画像を照らしています。
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest57
{
public static void main(String args[])
throws Exception
{
/* 画像をライトで照らしたような画像の生成 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
LightFilter lf = new LightFilter();
LightFilter.Light lt1 = new LightFilter.Light();
/* 方位 */
lt1.setAzimuth(90f/180f*ImageMath.PI);
/* 高さ */
lt1.setElevation(0.8f);
/* 強さ */
lt1.setIntensity(0.5f);
/* 位置X */
lt1.setCentreX(0.2f);
/* 位置Y */
lt1.setCentreY(0.5f);
/* ライトの色 */
lt1.setColor(0xff0000ff);
lf.addLight(lt1);
LightFilter.Light lt2 = new LightFilter.Light();
/* 方位 */
lt2.setAzimuth(90f/180f*ImageMath.PI);
/* 高さ */
lt2.setElevation(0.8f);
/* 強さ */
lt2.setIntensity(0.5f);
/* 位置X */
lt2.setCentreX(0.8f);
/* 位置Y */
lt2.setCentreY(0.5f);
/* ライトの色 */
lt2.setColor(0xffff0000);
lf.addLight(lt2);
BufferedImage img2 = lf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample588a.jpg"));
}
}
元画像(sf2.jpg)
出力画像(sample588a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
Python Imaging Libraryを使用して画像をエンボス処理する
PILを使用して画像をエンボス処理するには、以下のコードを実行します。
# coding=UTF-8
import Image
import ImageFilter
# 画像をエンボス処理する
img1 = Image.open("sf.jpg")
img2 = img1.filter(ImageFilter.EMBOSS)
img2.save("sample621a.jpg")
元画像(sf.jpg)
出力画像(sample621a.jpg)
関連情報
Python Imaging Libraryまとめ
# coding=UTF-8
import Image
import ImageFilter
# 画像をエンボス処理する
img1 = Image.open("sf.jpg")
img2 = img1.filter(ImageFilter.EMBOSS)
img2.save("sample621a.jpg")
元画像(sf.jpg)
出力画像(sample621a.jpg)
関連情報
Python Imaging Libraryまとめ
librsvgで文字列を描画する
librsvgで文字列を描画するには、以下のSVGファイルを処理します。
text.svg
コマンド
rsvg-convert text.svg -f png -o sample678.png
出力画像(sample678.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
text.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"
width="200" height="200">
<text x="20" y="100" font-family="MS UI Gothic" font-size="50"
style="fill:#bbddff; stroke:#000000">さんぷる
</text>
</svg>
コマンド
rsvg-convert text.svg -f png -o sample678.png
出力画像(sample678.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
Monday, October 13, 2008
Java2DとJava Image Filters(pixels)を使用して万華鏡のような画像を生成する
Java2DとJava Image Filters(pixels)を使用して万華鏡のような画像を生成するには、以下のコードを実行します。
元画像(sf2.jpg)
出力画像(sample587a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest56
{
public static void main(String args[])
throws Exception
{
/* 万華鏡のような画像の生成 */
BufferedImage img = ImageIO.read(new File("sf2.jpg"));
KaleidoscopeFilter kf = new KaleidoscopeFilter();
/* 面数 */
kf.setSides(6);
/* 角度1 */
kf.setAngle(20f/180f*ImageMath.PI);
/* 角度2 */
kf.setAngle2(50f/180f*ImageMath.PI);
/* 中心X */
kf.setCentreX(0.5f);
/* 中心Y */
kf.setCentreY(0.5f);
/* 半径 */
kf.setRadius(100);
BufferedImage img2 = kf.filter(img, null);
ImageIO.write(img2, "jpg", new File("sample587a.jpg"));
}
}
元画像(sf2.jpg)
出力画像(sample587a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
librsvgでパスを描画する
librsvgでパスを描画するには、以下のsvgファイルを処理します。
path.svg
rsvg-convert path.svg -f png -o sample677.png
出力画像(sample677.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
path.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"
width="200" height="200">
<path d="M 150,0 L 10,10 A 100,100 0 0,1 80,80 Z"
style="fill:#bbddff; stroke-width:1; stroke:#000000 "
/>
</svg>
コマンドrsvg-convert path.svg -f png -o sample677.png
出力画像(sample677.png)
○関連項目
・librsvgをwindowsで使用してSVGからPNG画像を生成する (librsvgをWindowsで使用する方法)
・libsvgに関する他の記事はこちらを参照してください。
Sunday, October 12, 2008
ImageMagickとPHPで画像の端を半透明にする
Imagickで画像の端を半透明にするには、以下のコードを実行します。
元画像(sf2.jpg)
出力画像(sample653a.png):半透明PNG
出力画像(sample653b.jpg)
関連項目
ImageMagickとPHPで半透明の円形に切り取って他の画像と重ね合わせる
ImageMagickで画像に半透明グラデーションをかける
<!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>sample653(ImageMagick6.4.2)</title>
</head>
<body>
<?php
/* 画像の端を半透明グラデーションにする */
$im = new Imagick("sf2.jpg");
$im->setImageMatte(true);
$it = $im->getPixelIterator();
foreach($it as $py => $line){
foreach($line as $px => $pixel){
$pixel->setColorValue(Imagick::COLOR_ALPHA,
((1.0-pow(2*$px/(float)$im->getImageWidth()-1.0, 4))*
(1.0-pow(2*$py/(float)$im->getImageHeight()-1.0, 4)))
);
}
$it->syncIterator();
}
$im->writeImage('sample653a.png');
/* 白背景と重ね合わせてjpegで保存 */
$im2 = new Imagick();
$im2->newImage($im->getImageWidth(), $im->getImageHeight(), "white");
$im2->compositeImage($im, Imagick::COMPOSITE_DEFAULT, 0, 0);
$im2->writeImage('sample653b.jpg');
$im2->destroy();
$im->destroy();
?>
<img src="sample653a.png" />
<img src="sample653b.jpg" />
</body>
</html>
元画像(sf2.jpg)
出力画像(sample653a.png):半透明PNG
出力画像(sample653b.jpg)
関連項目
ImageMagickとPHPで半透明の円形に切り取って他の画像と重ね合わせる
ImageMagickで画像に半透明グラデーションをかける
ImageMagickで画像のレベルを変更する
Java2DとJava Image Filters(pixels)を使用して画像をリサイズする
Java2DとJava Image Filters(pixels)を使用して画像をリサイズするには、以下のコードを実行します。
元画像(sf.jpg)
出力画像(sample586a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import com.jhlabs.image.*;
public class Java2DTest55
{
public static void main(String args[])
throws Exception
{
/* 画像のリサイズ */
BufferedImage img = ImageIO.read(new File("sf.jpg"));
BufferedImage img2 = new BufferedImage(
200, 100, BufferedImage.TYPE_INT_RGB
);
ScaleFilter sf = new ScaleFilter(200, 100);
img2 = sf.filter(img, img2);
ImageIO.write(img2, "jpg", new File("sample586a.jpg"));
}
}
元画像(sf.jpg)
出力画像(sample586a.jpg)
関連項目
Jerry Huxtableさんのホームページ
http://www.jhlabs.com/index.html
Java Image Filtersのページ
http://www.jhlabs.com/ip/filters/
java.netでのプロジェクトページ
https://pixels.dev.java.net/