ImageMagick ..
[2ch|▼Menu]
2:名無しさん@お腹いっぱい。
12/10/29 01:50:07.16 cUfjJSZ20
ちんぽ

3:名無しさん@お腹いっぱい。
12/10/30 17:02:13.08 /m10Ewat0
いちばん基本的な使い方は画像形式の変換

> convert a.jpg a.bmp

a.jpgをbmp形式に変換したファイルが作成される
オプションも何も要らない
何にしたいかは拡張子を読んで勝手に判断してくれる

> convert *.jpg a.bmp

と書くと、全てのjpgファイルをbmp形式にする
ファイル名がカチ合ってるので、そこは
a-0.bmp
a-1.bmp
という具合に勝手に気を使って名前を付けてくれる

4:名無しさん@お腹いっぱい。
12/10/30 17:12:28.49 /m10Ewat0
ファイル名を残したまま拡張子だけ変えたい時は、
convertではなくmogrifyを使って、

> mogrify -format bmp *.jpg

という風に書く。
-formatに指定できる文字列は、

> mogrify -list format

とやると表示されて、殆ど何でもある
magは無いけど

ところで、mogrifyってどういう意味だろ

5:名無しさん@お腹いっぱい。
12/10/30 17:17:47.91 /m10Ewat0
>>3で、
ファイル名が自動で決まるのが気持ち悪い時は、
C言語とかのprintf()みたいな構文が使えて、

> convert *.jpg a%03d.bmp

と明示的に指定すると、
a000.bmp
a001.bmp
という具合になる

batファイルに書く時は、%を%%にしておかないと消えてしまうけどな

6:名無しさん@お腹いっぱい。
12/10/30 20:55:37.00 FDCbbAGL0
2007年に立ってたスレ

スレリンク(software板)

7:名無しさん@お腹いっぱい。
12/10/31 23:33:08.22 XbOI5/Yq0
画像形式変換の次によく使うのが、画像の縮小
画像掲示板でサムネイルを作るような処理はみんなこれ

> convert.exe -resize 100x100 a.jpg out.jpg

100x100ドットの画像になるように見えてそうではない
100x100の箱に収まる最大サイズに縮小してくれる
横長の画像なら横が100ドットになるし、縦長なら縦が100ドット

アスペクト比なんかどうでもいいから、とにかく100x100きっちりにしろ!!!、
という場合には

> convert.exe -resize 100x100! a.jpg out.jpg

と書く。! に強い意志が込められている。

8:名無しさん@お腹いっぱい。
12/10/31 23:57:00.66 XbOI5/Yq0
-resizeオプションの後にはgeometry引数と呼ばれるものが入り、
結構いろいろな書き方ができる

-resize 50%

と書くと縦横50%に縮小してくれる

-resize 100x100>

と書くと、元の画像が100x100よりも大きい場合には100x100の中に入るように縮小するけれど、
100x100よりも小さい場合には何もせずにそのまま、という賢い処理をしてくれる
アイコンみたいな画像を拡大されても困るしね

batファイルに書く時は、%は%%に、>は^>と書く必要がある
リダイレクト文字をオプションに使うという神経が判らない

9:名無しさん@お腹いっぱい。
12/11/02 00:29:04.07 DjgZZc750
使用頻度は下がるけど、画像の一部切り出しというのも使う
photoshopで切り出す範囲を目で見て指定するならともかく、
最初から切り出す範囲が判ってるケースというのはあんまり無い

> convert -crop 100x100+0+0 a.jpg out.jpg

と書くと、a.jpgの左上から100x100の領域がout.jpgとして切り出される
+0+0の部分はオフセットで、切り出す左上の位置を示している
数学で直交座標をイメージすると、左下が原点だけど、画像は何故か左上が原点

10:名無しさん@お腹いっぱい。
12/11/02 00:38:48.41 DjgZZc750
オフセットの指定をサボって、

> convert -crop 100x100 a.jpg out.jpg

と書くと、挙動は大きく変わって、
画像を100x100単位でタイルに分割して、切れ端も含めてそれらを全部、
out-0.jpg
out-1.jpg
out-2.jpg
という感じに出力する

よくある、1枚の絵に見えて保存しようと思うと破片しか保存できない、
みたいな意地悪ページの作成に使える
タイルに分割してかつオフセットも指定したい時はどうすれば

11:名無しさん@お腹いっぱい。
12/11/02 00:48:07.64 DjgZZc750
ちょっと変わった使い方として、

> convert -crop 50%x100% a.jpg out.jpg

こんな指定もできる
オフセットを書いていないのでタイルに分割されるけど、
大きさを元ファイルに対する割合で記述していて、
横に50%縦に100%のサイズで分割するので、
結局左右に2分割した画像が
out-0.jpg
out-1.jpg
として得られる
見開きスキャンした画像の分割なんかに使える

12:名無しさん@お腹いっぱい。
12/11/03 01:46:54.59 jA1iIBcW0
GIFアニメの作り方

001.jpg
002.jpg
003.jpg
みたいな感じで素材の画像データが用意してあるとして、

> convert *.jpg out.gif

これで出来てしまう
アホみたいに簡単
まあ、素材の準備が大変なんだけど

13:名無しさん@お腹いっぱい。
12/11/03 01:51:01.29 jA1iIBcW0
さすがに手を抜きすぎなので、ちょっと指定を増やしていく
まず画像サイズ
GIFアニメは巨大になりがちなので、縮小してサイズ低下を図る

> convert -geometry 320 *.jpg out.gif

これで横320ピクセルになる

それでもサイズがでかいので、レイヤー間で同じことが書いてある部分は
省略することでサイズを縮める

> convert -layers optimize -geometry 320 *.jpg out.gif

14:名無しさん@お腹いっぱい。
12/11/03 01:54:30.82 jA1iIBcW0
これで結構縮む場合が多いけど、厳密に同じ色でないと効かないので、
動画のキャプチャーとかの素材だとまだ不十分なので、
多少違う色でも同じことにしといてよ、という指定をする

> convert -fuzz 3% -layers optimize -geometry 320 *.jpg out.gif

これはなかなかよく効く
効き過ぎて困るくらい
3%くらいにしとかないと、調子に乗って上げると再現なく縮む代わりに、
絵は全く動かなくなる

15:名無しさん@お腹いっぱい。
12/11/03 02:07:49.45 jA1iIBcW0
次の絵に変わるまでのインターバルを指定するには、
delayオプションを使う

> convert -delay 100 -layers optimize -geometry 320 *.jpg out.gif

単位は10ms。100にすると、1秒に1枚切り替わる。
delayを指定しないとデフォルトでは0ということになるけれど、
インターバルの小さなアニメGIFをどう表示するかはビュアーなり
ブラウザに依存するので、意外とちゃんと見えたりするけど、
ちゃんと指定するのが無難

ちゃんと指定してるのに、IEで見た時だけ妙に遅かったりするけど

16:名無しさん@お腹いっぱい。
12/11/03 02:14:28.17 jA1iIBcW0
もう一つ、省略していいような、指定した方がいいようなオプションを追加

> convert -loop 0 -delay 100 -layers optimize -geometry 320 *.jpg out.gif

loopは繰り返し回数を指定する
で、0にすると無限に繰り返す
でもデフォルトでそうなってる気がするけど、
ビュアーが気を利かして繰り返してくれてるだけなのかもしれないから、
明示的に指定しておくのが無難
3回だけ繰り返す、みたいなGIFアニメなんか見たことないけど

17:名無しさん@お腹いっぱい。
12/11/03 02:28:12.10 jA1iIBcW0
GIFアニメの作り方はこれで完成として、
逆に作ったGIFアニメをバラの画像ファイルに戻したい時
あるいは、他人の作ったGIFアニメを解剖したい時

> convert +adjoin animation.gif output%03d.bmp

+adjoin オプションを付けるとバラファイルになる

なんでadjoinなのにバラなのか
実は、-adjoinオプションというのが元々あって、
複数の画像ファイルを一つにまとめるという機能がある
でも、このオプションはデフォルトでONで、
だからこそ、出力ファイルにgifを指定するだけでGIFアニメが作れていた
で、adjoinするの止めろよ、という否定オプションが +adjoinなので、
バラす時だけadjoinが使われるという不思議なことになっている

18:名無しさん@お腹いっぱい。
12/11/03 02:46:44.99 jA1iIBcW0
>>17の方法だと、
-layers optimize で作られたアニメGIFは、差分部分のみしか画像化にされない
どう圧縮が効いているのか判断するのには便利だけど、
圧縮される前の絵に戻したい場合には、-coalesce オプションを使う。

> convert -coalesce +adjoin animation.gif output%%03d.bmp

コウアレスと発音する。アクセントはレの所。三重母音なのか?
意味は合体する癒着する

19:名無しさん@お腹いっぱい。
12/11/03 03:00:24.31 jA1iIBcW0
あ、実験してみたら、+adjoinオプション無くてもバラせるわ

> convert animation.gif output%03d.bmp

これでいける

> convert animation.gif output%03d.gif

これでも大丈夫

> convert animation.gif output.gif

これだとアウト

> convert animation.gif output.bmp

これならok

つまり、基本は-adjoin有効なんだけど、出力ファイルがbmpみたいに
adjoin不可能なら、自動的に+adjoinになる
gifの場合はadjoin可能だからバラしてくれないけど、
%03d.gifみたいにいかにもバラして欲しい感じのファイル名だった時は、
気を利かせて+adjoinになる

凄いでしょ
ImageMagickこんなんばっかりよ

20:名無しさん@お腹いっぱい。
12/11/11 23:28:33.18 toT+qNEC0
画像をタイル状に並べる
大量の画像の見本みたいなのを作るのに便利

> montage -tile 4 -geometry 320 *.jpg tile.jpg

横に4つ並べて縦にずらっと並ぶ
縦で指定したい時は、-tile x4 のように書く

-geometryでの指定は、出来上がりサイズではなく、個々の画像のサイズになる

用意した画像の数が縦横の積ぴったりでない場合、余った部分は背景色になる
背景色はデフォルトでは白だけど、他の色にしたい場合は、
-background #808080
のように指定する。順番はRGB

繰り返し実験する時は、出力先に指定した画像を消しておかないと、
その画像もタイルの一部になってしまう
さらに繰り返すと、フラクタルみたいに無限に自分自身が映り込んでいく

21:名無しさん@お腹いっぱい。
12/11/13 22:52:57.85 nS/ZZQq50
続きまだー

22:名無しさん@お腹いっぱい。
12/11/15 01:20:15.93 hdD7JsrG0
実はふむふむこんな使い方もあるんだなと感心して見てました(´・ω・`)

23:名無しさん@お腹いっぱい。
12/11/15 09:13:34.92 MKggAK5r0
convertのオプションの日本語訳

URLリンク(www5a.biglobe.ne.jp)

24:名無しさん@お腹いっぱい。
12/11/27 16:44:36.53 nFQjpjNA0
PHPでMagick使ってるんだけど
文字の縁取りをStrokeWidthでやるとフォントの角ばった部分が丸くストロークされちゃう
改善方法ある?

25:名無しさん@お腹いっぱい。
12/12/12 21:16:13.28 Vk2VT3By0
Const Width = "640"
Const Height = "480"
Const Font = "meiryo.ttc"

Set FileSystem = Createobject("Scripting.FileSystemObject")
Set Shell = CreateObject("WScript.Shell")
Set ImageMagick = CreateObject("ImageMagickObject.MagickImage.1")

Messages = ImageMagick.Convert( _
"-font", FileSystem.BuildPath(Shell.SpecialFolders("Fonts"), Font), _
"-pointsize", "60", _
"label:@" & FileSystem.GetBaseName(WScript.ScriptFullName) & ".txt", _
"nul.bmp")
If Width / Split(Messages, ",")(0) =< Height / Split(Messages, ",")(1) Then
PointSize = Fix(Width / Split(Messages, ",")(0) * 60)
Else
PointSize = Fix(Height / Split(Messages, ",")(1) * 60)
End If
ImageMagick.Convert _
"-size", Width & "x" & Height, _
"canvas:none", _
"-fill", "white", _
"-draw", "rectangle 0,0," & Width - 1 & "," & Height - 1, _
"-font", FileSystem.BuildPath(Shell.SpecialFolders("Fonts"), Font), _
"-pointsize", PointSize, _
"-fill", "black", _
"-gravity", "center", _
"-annotate", "0", "@" & FileSystem.GetBaseName(WScript.ScriptFullName) & ".txt", _
FileSystem.GetBaseName(WScript.ScriptFullName) & ".bmp"

26:名無しさん@お腹いっぱい。
12/12/12 21:23:39.12 Vk2VT3By0
お。書けた。
上記を*.vbsとして保存して、同名の*.txtにBOM無しUTF-8でテキストを入れておくと、そのテキストが画像になります。

これでフォントをMS ゴシックにすると、半角文字に空白がくっついて全角文字と同じ幅になってしまうのですが、
対処方法知ってる人がいたら教えてもらえないでしょうか。
等幅でもあくあフォントとかを使えば期待通りに動くのですが。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4069日前に更新/12 KB
担当:undef