サブタイトル:「mer2のマイノリティ・レポート(笑)」 --- 最近忍者ブログの仕様が変わったようで、一部の画像が見えなくなってますが、画像のURLコピペで見られます。(どうしよう困ったな) --- ご用件など、ございましたらtwitterまでどうぞ。
例えば、いきなり1920x1200の黒一色べた塗り画像が欲しくなったとする。
君ならどうする?
方法はいろいろあるだろうけど、ぼくならこうする:
方法はいろいろあるだろうけど、ぼくならこうする:
convert -size 1920x1080 xc:black dest.png
ほらできた。
サイドバイサイドなステレオ画像をLRに分けたくなった。
君ならどうする?
convert -crop 50%x100% source.png dest.png
はい、できた。
はい、できた。
ステレオ画像がハーフサイズだったら?
convert -crop 50%x100% source.png -resize 200%x100% dest.png
うわ、できた。(もしかしたらできるかなって、今はじめてやった)
ImageMagickを使うには、もちろんImageMagickのインストールが必要。
http://www.imagemagick.org/
Windowsでも、まっくでも、Linuxでも使えるぞ。インストールの方法は調べりゃいっぱい出てくるから自分で調べよう。
とりあえず、Eshell上で
convert -crop (/ 1920 2) source.png dest.png
みたいにEmacs Lispが使える。結果は
convert -crop 960 source.png dest.png
となる。
でもこれじゃいまいち実用的じゃないよね。
convert -crop 960x1080 source.png dest.png
みたいなのを実現するには、
convert -crop (concat (number-to-string(/ 1920 2)) "x1080") source.png dest.png
とやらないと上手くいかない。ちょっと面倒ね。
(無理矢理ブログカテゴリに合わせた話題でした)
あと、Eshell上でワイルドカード使って
convert -delay 5 -loop 0 -dispose previous *.png test.gif
とかやると、何故か "*" が降順に展開されます。このへんはスクリプトとかでカバーしてやらないと駄目みたい。
以下は私のよく使いそうなオプションのめもめも。
なんかいいの見つけたら追記します。
画像の情報を調べる
identify picture.png
フォーマット変換
convert -resize 200% -quality 70 source.png dest.jpg
mogrifyで一括フォーマット変換
mogrify -format png *.jpg
mogrifyで一括フォーマット変換
mogrify -format png *.jpg
(*.jpgを*.pngに。元ファイルは残る)
作成
convert -size 1280x720 xc:black back.png
convert -size 1280x1024 xc:'rgba(100,100,100,0)' back.png
convert -size 1280x1024 xc:'rgb(100,100,100)' back.png
反転:
convert -negate src.png dest.png
ガンマ:
convert -gamma 2 src.png dest.png
切り出し:
convert -crop 1920x1080+150+144 src.png dest.png
convert -crop 480 src.png dest.png
--"geometry does not contain image"が出たら
チェック:
identify src.png
元画像のgeometryで処理されている。"-page +0+0"を付ける。
convert -crop 480 src.png -page +0+0 dest.png
"+repage"でできるという説もあるが、上手くいかない。
ブレンド:
composite -dissolve 90 src100.png src0.png dest.png
拡縮:
convert -resize 200% src.png dest.png //アスペクト保持
convert -resize 200%! src.png dest.png //横のみ?
convert -resize 3840x1080 src.png dest.png
convert src.png -resize 3840x1080 dest.png //違うの?
指定色をアルファに
convert -transparent black src.png dest.png
合成
convert -composite under.png over.png dest.png
convert -composite -gravity center under.png over.png dest.png
compositeコマンドでもできるけど、重なりが逆になる?
composite over.png under.png dest.png
グレイスケール
convert -type GrayScale source.jpg dest.png
RGBAをRGBに(逆は知らぬ)
convert img-rgba.png -flatten +matte img-rgb.png
複数画像をGIFアニメに
convert -delay 5 -loop 0 -dispose previous *.png dest.gif
convert -delay 5 -loop 0 -dispose previous src_0.png src_1.png src_2.png src_3.png src_4.png src_5.png src_6.png src_7.png src_6.png src_5.png src_4.png src_3.png src_2.png src_1.png dest.gif
GIFアニメを連番画像に
convert +adjoin src.gif dest.png
なんかメモに書いてあったので(あとで):
convert -fill blue -draw "rectangle 0,0,100,719" test.png
convert -fill blue -draw "rectangle 0,0,100,719" test.png dest.png
mogrify -fill blue -draw "rectangle 0,0,100,719" *.png
mogrify -fill blue -draw "rectangle 900,100,1000,200" *.png
PR
Eshell scriptって何よ?
EmacsのEshell上で使えるいわゆるshellスクリプトです。
普通のshellスクリプト中にEmacs Lispが使えるというヘンタイスクリプトです。
ここにちょっと解説が (っていうかここしか解説してるところが無い)
一時期「Windows PowerShell」なんかも試してみたりしたんだけど、ちょこちょことキモチワルイところがあるので、やめました。
Eshell scriptならEmacsだけが入ってればOSを問いませんので良いのではないかと。
時代はクロスプラットフォーム!(私はLinuxに行きたい!)
ファイル名の命名規則を決めておきましょう:
ベースファイル名+フレームナンバー(5桁)+_視点数ナンバー.png
というかんじで。
「視点数ナンバー」っていうのは多視点を前提にしてるせいで、今回の場合はステレオ2視点なので
basename_00001_0.png - フレーム1の右目画像
basename_00001_1.png - フレーム1の左目画像
となってます。
今回、別のマシンでカットを分けてレンダリングしたものを使用しています。
マシン名をPC1、PC2、PC3として、それぞれに"render"という共有フォルダを作ってあるとすると、
//PC1/render
//PC1/render
//PC1/render
でアクセスできる。
(パスの区切りは"\\PC1\render"でもオッケー)
windowsの場合、マシン名は大文字小文字の区別は無いようだ。
"//pc1/"でもアクセスできる。
マシン名だけ打てば、共有フォルダ名は補完が効く。
"//pc1/r"だけ打てば補完できる。
左右の画像から平行法なステレオ画像を作るにはImageMagicを使う。
> convert +append L.png R.png LR.png
てなかんじ。当然ImageMagicのインストールが必要です。
ちなみに、トップアンドボトムな配置の場合は
> convert -append L.png R.png LR.png
になります。
とりあえず1カット分だけでテスト。
---- edit_test01.esh
#このへんは適宜変更
setq cut01_base "//PC1/render/test_" #ファイルパス + ベースファイル名
setq cut01_start "1" #編集開始のフレームナンバー
setq cut01_fnum "10" #編集するフレーム数(フレームナンバーではない)
setq dest_base "z:/dest_" #編集結果のファイルパス + ベースファイル名
setq start_frame "0" #編集結果の連番開始ナンバー
#適宜変更おわり
setq dest_page (string-to-number start_frame)
setq src_count (string-to-number cut01_start)
setq src_limit (+ (string-to-number cut01_fnum) src_count)
setq src_base $cut01_base
while (< src_count src_limit) {
setq LEFT (concat src_base (format "%05d" src_count) "_1.png" )
setq RIGHT (concat src_base (format "%05d" src_count) "_0.png" )
setq dest (concat dest_base (format "%05d" dest_page) ".png" )
setq commandline (concat "convert +append " LEFT " " RIGHT " " dest )
#デバッグ用
echo $commandline
#本番用
#alias command $commandline
#command
(incf src_count)
(incf dest_page)
}
----
いろいろ無理矢理ですが、なにしろよくわかってないので。動いたもん勝ちです。
・setq で変数に数値を入れたときの結果が、1桁だと数値、2桁以上だと文字列になってしまうらしい(?)。
ややこしくなるので、最初から文字列で代入して、使うときに数値にしてます。
・"$commandline"だけで文字列を実行してくれると思ってたんだけど、何故かそれだと"command not found"になってしまうので、苦肉の策でaliasにしてます。
実行方法:
「適宜変更」のところを各自の環境に合わせて修正してください。
Emacs上で'M-x eshell'して、Eshell起動。
Eshellで
Eshellで
$ . edit_test01.esh (ピリオド スペース ファイル名です)
でスクリプト実行。
ずらずらと流れるコマンドラインに間違いがないようならば、本番用のとこの
ずらずらと流れるコマンドラインに間違いがないようならば、本番用のとこの
#alias command $commandline
#command
のコメントを外して実行。
どっか間違えてたら、convertコマンドがエラー出します。
途中で止めるには、C-gかESC連打かC-x kでEshelバッファ消しちゃうか。(ごめんなさい、まだよくわかってないの)
うまくいってるようなので、PC3台分をまとめられるようにします。
もうちょっと綺麗にまとまりそうだけど、効率優先でメインループは連続コピペです。てへぺろ
"dest_base"に設定したフォルダにサイドバイサイドな連番動画ができあがるので、あとはffmpegなりなんなりで動画にしてやってください。
最新記事
(04/20)
(11/21)
(01/01)
(06/12)
(06/12)
(05/29)
(05/22)
(05/21)
(12/25)
(12/20)
最新コメント
[08/27 BernardSr]
[08/27 BernardSr]
[08/27 BernardSr]
[12/29 GroverIcow]
[12/26 gayenKinesl]
[12/25 gayenKincfv]
[12/25 geRoesonokp]
[12/24 geRoesonmxu]
[06/30 LindsayDom]
[06/24 Ayukupim]
[06/22 francinerj2]
[06/21 Karsewis]
[06/17 Porsulik]
[06/16 Porsulik]
[06/16 Porsulik]
[06/16 Amimior]
[06/15 WilfordMof]
[06/11 lakeishatb1]
[06/04 Mathewlomi]
[05/31 tiopomWarriorvrp]
[05/31 Lasdumor]
[05/29 Aredorer]
[05/27 IMPUCKICT]
[05/26 Asosans]
[05/24 RaymondZice]
カテゴリー
リンク
アーカイブ
アクセス解析
カウンター
カレンダー
12 | 2025/01 | 02 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
プロフィール
HN:
mer2
性別:
男性
趣味:
野良猫の餌付け