2 :
名無しさん@お腹いっぱい。:2007/11/16(金) 22:49:29 ID:O1k6DxGW0
3 :
名無しさん@お腹いっぱい。:2007/11/16(金) 22:55:19 ID:k4ljKlgI0
http://www.imagemagick.org/script/binary-releases.php から
ImageMagick-6.3.6-10-Q16-windows-dll.exe (32bit版XP等の場合)を
ダウンロードしてインストール。インストールの過程で
□ Install ImageMagickObject OLE Control for VBscript, Visual Basic, and WSH
のチェックを入れてください。
↓をメモ帳等のテキストエディタに貼り付けて jpgborder.js という名前を付けて保存する。
JPGファイルのアイコンをjpgborder.jsのアイコン(ショートカットでもよい)に
ドラッグ&ドロップすると簡単にフチが付く!
フチが付けられたファイル名には"a"が付きます。("$1a$2"という記述により)
// jpgborder.js
var BorderWidth = { X: "3%", Y: "4%" }; // フチの幅。%を付けなければ固定値
var FilenameConverter = { Pattern: /(^|[/\\])(.*?)(\.jpg)$/i, ReplaceText: "$1$2a$3" };
var ImageMagick = new ActiveXObject("ImageMagickObject.MagickImage.1");
var Args = WScript.Arguments;
for (var i = 0; i < Args.length; i++) {
try {
ImageMagick.Convert("-border", BorderWidth.X + "x" + BorderWidth.Y,
"-bordercolor", "white",
Args(i),
Args(i).replace(FilenameConverter.Pattern, FilenameConverter.ReplaceText));
}
catch (e) {
WScript.Echo(Args(i) + " は変換できません。");
}
}
4 :
名無しさん@お腹いっぱい。:2007/11/16(金) 22:58:27 ID:k4ljKlgI0
これはつまるところ、コマンドプロンプトを使わなくてもexeファイルにオプションを付けて実行出来るぞ、ってことですかね?
>>3 見やすくインデントしときますた
// imgborder.js
var BorderWidth = { X: "3%", Y: "4%" }; // フチの幅。%を付けなければ固定値
var FilenameConverter = { Pattern: /(^|[/\\])(.*?)(\.jpg)$/i, ReplaceText: "$1$2a$3" };
var ImageMagick = new ActiveXObject("ImageMagickObject.MagickImage.1");
var Args = WScript.Arguments;
for (var i = 0; i < Args.length; i++) {
try {
ImageMagick.Convert("-border", BorderWidth.X + "x" + BorderWidth.Y,
"-bordercolor", "white",
Args(i),
Args(i).replace(FilenameConverter.Pattern, FilenameConverter.ReplaceText));
}
catch (e) {
WScript.Echo(Args(i) + ": error");
}
}
>>3-5 このプログラムのやってることはコマンドプロンプトから
D:\>"c:\Program Files\ImageMagick-6.3.6-Q16\convert.exe" -border 3%x4% -bordercolor white IMG01.JPG IMG01a.JPG
を実行する処理と一緒です。
これは画像にwhite色のborder(フチ)を付ける処理をします。
これでフチを付けるとフチの分だけ画像の大きさが大きくなるけど
この大きさ自体を変えないようにフチを付けるにはどうすりゃいいか。
ところで3行目はこれがいいと思う
var FilenameConverter = { Pattern: /(\.jp(?:[eg]|eg))$/i, ReplaceText: "a$1" };
ちょっと質問です。
6.3.6-10-Q16-windowsで複数のpngとかjpegからpsdファイルを作りたいと思って、
convert hoge.png fuga.jpg out.psd
としたら一応psdファイルは出来たんですが、Photoshop7.0とかGIMP2.4ではエラーが出て開けません。
とりあえず
convert out.psd[0] layer0.png
convert out.psd[1] layer1.png
とやったら元の絵と同じ物が取り出せるのでデータ自体は格納されているようです。
ちなみに、1枚だけをpsdにした場合は問題なく開けます。
ちゃんとPhotoshop等で開ける複数レイヤーのpsdってどうやれば作れるんでしょう?
10 :
4:2007/11/19(月) 04:18:34 ID:ws3HxXwM0
11 :
名無しさん@お腹いっぱい。:2007/12/08(土) 14:04:07 ID:UBI8eeWg0
複数の画像ファイルを同一サイズにリサイズってどうやるんですか?
画質落とさずにってできますかね?
上書きして良いなら
mogrify -resize 640x480 *.jpg
png形式で出力するなら
mogrify -resize 640x480 -format png *.jpg
とか。
基本的に画質を落とさないリサイズは不可能。
縮小する場合は確実に潰れざるを得ないし、
拡大の場合も足りない部分を補間して埋めるからぼやけたりする。
画像をconvert -rotateで回転させると画像のサイズが変わってしまうんですが
サイズを変えない(回転してはみ出す部分は消滅)で回転させるにはどうしたらいいですか?
-cropで切り取れば良いんじゃない?
>>14 すいません
ひとつのファイルであればそれでいいんですが
>>13のような処理をまとめて適用したいんですよ
rotete後のサイズは角度によって違うのでできなくて・・・
もし元画像のサイズも全部バラバラで角度も全部バラバラ、
切り取りたい部分もバラバラってんならまとめて処理するなんて出来ないと思うが。
何か法則性があるなら適当なプログラム言語でバッチファイルを書き出してやれば良いんじゃない?
いえ、サイズは元のままにしたいんですよ?
回転させると大きさが変わってしまって・・・・っていう話ですから
元ファイル達が全部WxHで、それを全部R度回転させてWxHで切り取りたいんなら
mogrify -rotate R -crop WxH+X+Y *.png (X,Yは左上の調整用)
みたいな感じで一括処理できるわけだけど、
元のファイルのサイズが揃ってないなら一旦サイズを取得して
そのサイズでcropしなきゃいけない。
でもそんな機能はマニュアル読んだ限りじゃ載ってない。
だから各画像のサイズを取得してconvert -rotate R -crop WxH+X+Y hoge.pngを実行するようなものを作るしかない。
調べていただいてありがとうございます
シェルスクリプトでそういうのを作ろうと思います
元のサイズもそろってますし、
勘違いしてて、回転後のサイズ変化は90度の倍数の時以外は
一定で別にバラバラというわけではなかったので私でもできそうです
説明が足りず情報を小出しにしてしまいすいませんでした