[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Showing posts with label WSH. Show all posts
Showing posts with label WSH. Show all posts

Thursday, April 17, 2008

ImageMagickとWSHで、枠線のついたバッジ画像を作成する

枠線のついたバッジ画像を作成するには、以下のスクリプトを実行します。

実行例
cscript sample361.vbs 32 100 100 90 80 #f0e8a0 orange 5 200 200 sample361.png

sample361.vbs
------------------------------------------
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem ストローク色
sc = Wscript.Arguments(6)
rem ストローク幅
sw = Wscript.Arguments(7)
rem 出力サイズx
ox = Wscript.Arguments(8)
rem 出力サイズy
oy = Wscript.Arguments(9)
rem 出力ファイル名
ofile = Wscript.Arguments(10)

dr1=0
dr2=360/(par*2)
dat="polygon "
Do While dr2<360 p1x="int(cx-cos(2*pi*dr1/360)*rad1)" p1y="int(cy-sin(2*pi*dr1/360)*rad1)" p2x="int(cx-cos(2*pi*dr2/360)*rad2)" p2y="int(cy-sin(2*pi*dr2/360)*rad2)">0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-stroke", sc, "-strokewidth", sw, "-draw", dat, ofile

Set im = Nothing
------------------------------------------

出力画像(sample361.png)

Friday, March 21, 2008

ImageMagickで、任意の大きさの画像を角丸四角に切り取る

任意の大きさの画像を角丸四角に切り取るには、以下のVBSをWSHから実行します。

sample342.vbs
------------------------------------------------------------------------------------
Set im = CreateObject("ImageMagickObject.MagickImage.1")

rem 角丸x
rx = Wscript.Arguments(0)
rem 角丸y
ry = Wscript.Arguments(1)
rem 入力ファイル名
ifile = Wscript.Arguments(2)
rem 出力ファイル名
ofile = Wscript.Arguments(3)

rem 入力ファイルの幅・高さを取得する
width = im.identify("-format", "%w", ifile)
height = im.identify("-format", "%h", ifile)

rem 角丸四角で画像を切り取る
im.Convert ifile, "-matte", "(", "-size", width & "x" & height, "xc:none", "-fill", "white", "-draw", "roundrectangle 0,0," & (width-1) & "," & (height-1) & "," & rx & "," & ry , ")", "-compose", "dst_in", "-composite", ofile

Set im = Nothing
------------------------------------------------------------------------------------

元画像(sf.jpg)


実行例:
cscript sample342.vbs 20 10 sf.jpg sample342a.png
引数として、角丸x=20,角丸y=10,入力ファイル=sf.jpg,出力ファイルsample342a.pngを与えています。

出力画像(sample342a.png)


元画像(sf2.jpg)


実行例:
cscript sample342.vbs 30 30 sf2.jpg sample342b.png

出力画像(sample342b.png)

Tuesday, March 18, 2008

ImageMagickとWSHで、不規則な形のバッジを作成する

不規則な形のバッジを作成するには、以下のVBScriptをWSHで実行します。

sample340.vbs
-------------------------------------------------------------
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem 出力サイズx
ox = Wscript.Arguments(6)
rem 出力サイズy
oy = Wscript.Arguments(7)
rem 半径変動幅
dr = Wscript.Arguments(8)
rem 出力ファイル名
ofile = Wscript.Arguments(9)

dr1=0
dr2=360/(par*2)
dat="polygon "
Do While dr2<360 p1x="int(cx-cos(2*pi*dr1/360)*rad1)" p1y="int(cy-sin(2*pi*dr1/360)*rad1)" drr="dr*rnd()" p2x="int(cx-cos(2*pi*dr2/360)*(rad2+drr))" p2y="int(cy-sin(2*pi*dr2/360)*(rad2+drr))">0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-draw", dat, ofile

Set im = Nothing
-------------------------------------------------------------

実行例:
cscript sample340.vbs 36 100 100 90 80 orange 200 200 8 sample340.png

出力画像(sample340.png)

Saturday, February 16, 2008

ImageMagickとWSHで、角が丸くなったバッジ画像を生成する

角が丸くなったバッジ画像を生成するには、以下のVBScriptを実行します。

(sample311.vbs)
=============================================================
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem 出力サイズx
ox = Wscript.Arguments(6)
rem 出力サイズy
oy = Wscript.Arguments(7)
rem 出力ファイル名
ofile = Wscript.Arguments(8)

dr1=0
dr2=360/(par*2)
dat="stroke-linejoin round polygon "
Do While dr2<360 p1x="int(cx-cos(2*pi*dr1/360)*rad1)" p1y="int(cy-sin(2*pi*dr1/360)*rad1)" p2x="int(cx-cos(2*pi*dr2/360)*rad2)" p2y="int(cy-sin(2*pi*dr2/360)*rad2)">0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-stroke", fc, "-strokewidth", "4", "-draw", dat, ofile

Set im = Nothing
=============================================================

実行例
cscript sample311.vbs 36 100 100 90 80 #BBDDFF 200 200 sample311.png

出力画像(sample311.png)


stroke-linejoin roundにより、polygonで書かれたバッジの角が丸くなっています。

関連項目
ImageMagickとWSHで、バッジ画像を生成する

Friday, February 15, 2008

ImageMagickで影つきの立体的な角丸四角で修飾された文字列を描画する

影つきの立体的な角丸四角で修飾された文字列を描画するには、
以下のVBScriptをWSHで実行します。

sample209.vbs
========================================
Set im = CreateObject("ImageMagickObject.MagickImage.1")
rem 出力文字列(英文字のみ)
message_string = "ImageMagick"

For wl=1 to Len(message_string)
ch = Mid(message_string,wl,1)
If (wl mod 2) = 0 then
rt = "-15"
else
rt = "15"
end if
rem c0b49d
im.Convert "-size", "20x20", "xc:none", "-fill", "#bbddff", "-draw", "roundrectangle 0,0,19,19,5,5", "-font", "Tahoma-Bold", "-gravity", "center", "-fill", "#435184", "-draw", "font-size 15 text 0,0 '" & ch & "'", "-virtual-pixel", "background", "-background", "none", "-rotate", rt, "(", "+clone", "-shade", "135x23", "-blur", "0x2", "-normalize", ")", "-compose", "overlay", "-composite", "(", "+clone", "-background", "#052050", "-shadow", "50x2+1+10", ")", "+swap", "-compose", "src-over", "-background", "white", "-mosaic", "t" & wl & ".png"

if wl = 1 then
im.Convert "t1.png", "output.png"
else
im.Convert "output.png", "t" & wl & ".png", "+append", "output.png"
end if

Next

Set im = Nothing
========================================

実行例
cscript sample209.vbs

出力画像(output.png)



関連項目
ImageMagickで角丸四角で修飾された文字列を描画する

Saturday, February 02, 2008

ImageMagickとWSHで、バッジ画像を生成する

ImageMagickとWSHで、バッジ画像を生成するには、以下のスクリプトを実行します。

sample294.vbs
=============================================
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem 出力サイズx
ox = Wscript.Arguments(6)
rem 出力サイズy
oy = Wscript.Arguments(7)
rem 出力ファイル名
ofile = Wscript.Arguments(8)

dr1=0
dr2=360/(par*2)
dat="polygon "
Do While dr2<360
p1x=int(cx-cos(2*pi*dr1/360)*rad1)
p1y=int(cy-sin(2*pi*dr1/360)*rad1)
p2x=int(cx-cos(2*pi*dr2/360)*rad2)
p2y=int(cy-sin(2*pi*dr2/360)*rad2)

if dr1 >0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-draw", dat, ofile

Set im = Nothing

=============================================
実行例
cscript sample294.vbs 20 100 100 90 80 orange 200
200 sample294.png

出力画像(sample294.png)


関連項目
ImageMagickとVBS(WSH)でポラロイド写真を並べた画像を生成する
ImageMagickとWSHで、角が丸くなったバッジ画像を生成する

Saturday, November 03, 2007

ImageMagickで文字ごとに背景色が異なる文字列を描画する

文字ごとに背景色が異なる文字列を描画するには、以下のWSHスクリプトを実行します。

wb-letters.vbs
-----------------
Set im = CreateObject("ImageMagickObject.MagickImage.1")
rem 出力文字列(英文字のみ)
message_string = "ImageMagick"

color1="#ffffff"
color2="#000000"

For wl=1 to Len(message_string)
ch = Mid(message_string,wl,1)
If (wl mod 2) = 0 then
current1 = color1
current2 = color2
else
current1 = color2
current2 = color1
end if

im.Convert "-size", "20x20", "xc:" & current1, "-fill", current2, _
"-font", "Tahoma-Bold", "-gravity", "center", "-draw", _
"font-size 15 text 0,0 '" & ch & "'", "t" & wl & ".png"

if wl = 1 then
im.Convert "t1.png", "output.png"
else
im.Convert "output.png", "t" & wl & ".png", "+append", "output.png"
end if

Next

Set im = Nothing
-----------------

cscript.exe wb-letters.vbs

出力画像(output.png)

Saturday, August 11, 2007

ImageMagickで角丸四角で修飾された文字列を描画する

ImageMagickで角丸四角で修飾された文字列を描画するには、
以下のVBSをcscript.exe(WSH)で実行します。

letters-w-rr.vbs
Set im = CreateObject("ImageMagickObject.MagickImage.1")
rem 出力文字列(英文字のみ)
message_string = "ImageMagick"

For wl=1 to Len(message_string)
ch = Mid(message_string,wl,1)
If (wl mod 2) = 0 then
rt = "-15"
else
rt = "15"
end if

im.Convert "-size", "20x20", "xc:none", "-fill", "#c0b49d", "-draw", "roundrectangle 0,0,19,19,5,5", "-font", "Tahoma-Bold", "-gravity", "center", "-fill", "white", "-draw", "font-size 15 text 0,0 '" & ch &amp; "'", "-rotate", rt, "t" & wl & ".png"

if wl = 1 then
im.Convert "t1.png", "output.png"
else
im.Convert "output.png", "t" & wl & ".png", "+append", "output.png"
end if

Next

Set im = Nothing

出力画像(output.jpg)


関連項目
ImageMagickで文字ごとに背景色が異なる文字列を描画する
ImageMagickで影つきの立体的な角丸四角で修飾された文字列を描画する

Friday, May 11, 2007

ImageMagickとVBS(WSH)でポラロイド写真を並べた画像を生成する

ImageMagickとVBS(WSH)でポラロイド写真を並べた画像を生成するには、
以下のpolaroids.vbsを実行します。

cscript polaroids.vbs sample156.jpg sample3b.jpg sample4.jpg sample5.jpg sample6.jpg sample9b.jpg
polaroids.vbs
----------------------------------------------------------------------------

Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159
rem 開始角
sa=-30
rem 終了角
ea=30
rem 半径
rad=150
rem 出力サイズx
ox=300
oy=200

da=abs(sa-ea)/(WScript.Arguments.Count-2)
WScript.StdOut.WriteLine da
ra = sa
ofile = WScript.Arguments(0)


im.Convert "-size", ox & "x" & oy, "gradient:#ffffff-#bbddff", ofile
For wl=1 to WScript.Arguments.Count -1
infile = WScript.Arguments(wl)
outfile = WScript.Arguments(wl) & ".png"
WScript.StdOut.WriteLine "infile:" & infile
WScript.StdOut.WriteLine "outfile:" & outfile
WScript.StdOut.WriteLine "ra:" & ra
im.Convert infile, "-background", "none", "-polaroid", ra, "+repage", outfile

gx = int(rad * cos(2*pi*(ra+270)/360))
gy = int(rad * sin(2*pi*(ra+270)/360))
width = im.identify("-format", "%w", outfile)
height = im.identify("-format", "%h", outfile)
WScript.StdOut.WriteLine "width:" & width
agx = gx -width/2 +ox/2
agy = gy -height/3 +oy
if agx > 0 then sgx = "+" & agx else sgx = "" & agx end if
if agy > 0 then sgy = "+" & agy else sgy = "" & agy end if

im.Convert ofile, outfile, "-geometry", sgx & sgy, "-composite", ofile


ra=ra+da
Next
Set im = Nothing
----------------------------------------------------------------------------

出力画像(sample156.jpg)


関連項目
ImageMagickとWSHで、バッジ画像を生成する
ImageMagickで、画像をポラロイド写真風にして、日本語文字列を描画する

Friday, April 06, 2007

ImageMagickとVBで画像の幅・高さを取得する

ImageMagickとVBで画像の幅・高さを取得するには、
以下のスクリプトを実行します。

Set im = CreateObject("ImageMagickObject.MagickImage.1")
width = im.identify("-format", "%w", "sample7.jpg")
WScript.StdOut.WriteLine "width:" & width
height = im.identify("-format", "%h", "sample7.jpg")
WScript.StdOut.WriteLine "height:" & height
Set im = Nothing

入力画像(sample7.jpg)

実行結果:
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
width:150

Saturday, March 03, 2007

ImageMagickとVB Scriptを使用して複数画像を処理する

ImageMagickとVB Script(WSH)を使用して複数画像を処理することもできます。

以下のスクリプト(cv.vbs)では、指定されたディレクトリ内のすべての画像に
ロゴ画像を右下に重ね合わせます。
使用方法はコマンドプロンプトから以下のコマンドを実行します。
cscript cv.vbs <入力ディレクトリへのフルパス> <出力ディレクトリへのフルパス>


cv.vbs
--------------------------------------------------------------------------
WScript.StdOut.WriteLine "source directory:" + WScript.Arguments(0)
WScript.StdOut.WriteLine "output directory:" + WScript.Arguments(1)

im = "C:\Progra~1\ImageMagick-6.3.2-Q16\convert.exe"
opts = "yourlogo.png -gravity southeast -composite"

Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(WScript.Arguments(0))
for each objFile In objFolder.Files
WScript.StdOut.WriteLine "found:" & objFile
cs = im &amp;amp; " " & objFile.path & " " & opts & " " & WScript.Arguments(1) & "\" & objFile.name
WScript.StdOut.WriteLine "processing an image..."
Set objExec = objShell.Exec(cs)
Do While objExec.Status = 0
WScript.Sleep 100
Loop
WScript.StdOut.WriteLine "result:" & objExec.ExitCode
next
--------------------------------------------------------------------------
オプション用の変数(opts)を変更することで、他の画像処理を一度に実行することができます。

サンプル入力画像


重ねあわせ画像(yourlogo.png)


サンプル出力画像


関連項目
ImageMagickとWSHで、バッジ画像を生成する