ImageMagick
■ このスレッドは過去ログ倉庫に格納されています
超強力な画像処理ソフトImageMagickについて
公式
http://www.imagemagick.org/ そういうのは外部ソフトの問題
DOSコマンド実行にウィンドウは付き物ってわけじゃない
外部ソフト側がわざわざ表示させてる >>114
普通に外部ソフト実行時に意図的に非表示実行できる機能が付いたソフトの方が希少だと思うけど。
DOSコマンドをコマンドプロンプトを非表示で実行できる機能が付いてたり、それが既定の動作ならできるけど、
大半のソフトはコマンドプロンプトを非表示で実行するのが既定の動作ではなく、特に設定で指定できないのが普通。
だからソフトによってはサイレントモードとか/hide、/nodisplayのオプションや機能が付いてる。
それに相当する機能やオプションはImageMagickにはないんじゃないかな。
バッチだと最小化しかできないから、VBS,JS,PowerShell等、その他非表示実行できるスクリプトからでないとできないから、あると便利だけど。 >>115
起動する外部ソフト自体がUIを持ってるなら話は別だけど
自前のUIを持たないソフト、例えばこのimagemagickのようなのは
敢えてウィンドウ出さない限りDOSウィンドウは出ない
DOSウィンドウが出てるのはウィンドウを作ってからそこでコマンド実行してるから
直にコマンド実行してたらウィンドウは出ない もちろん、DOSウィンドウを出さないで下手なコマンド実行したら
終了したくても出来ないとか、知らずにとんでもない動作してたとかそんな事態が起こりうるんで
敢えて出す場合も多い
だからそれはコマンドを実行する側のソフトの動作による。
imagemagickの問題じゃない。 >>117
別にImageMagickの問題だと言いたい訳じゃないよ。
非表示で実行するオプションがあるか、という質問に「外部ソフトの問題」との回答だったから、
大半のソフトが外部ソフトを実行するパスに普通に.exeを記載,設定した場合に、DOSウィンドウを出して実行する仕様だから、それを書いただけだよ。
本当はスクリプト経由で実行しなくてもよいように、
外部ソフトがDOSウィンドウを出さずに実行する機能や、
実行される側のソフトが非表示で実行できるオプションがあると親切なんだけどね。
実行する側のソフトが、DOSウィンドウ出さずに実行する動作を行えればよいんだけど、
実際問題、外部ソフト側はDOSウィンドウを出して実行する(敢えてウィンドウを出す)仕様固定な場合がほとんどだから。 >>118
> 別にImageMagickの問題だと言いたい訳じゃないよ。
だから関係無いからここでグダグダ言うんじゃねえ
ス レ 違 い だ ってストレートに言わなきゃ通じないんかよ 普段画像読み込んで処理する簡単なプログラムとか作ってるけど、GPUで画像を処理するところより、PNGの読み込み、書き出しにそれなりに時間かかるってことが多い。
だから支援機能使っても縮小自体は速くならないんじゃないかなぁ。JPGだったらCUDAで読み書きが速くなる例はあるみたいだけど、PNGの圧縮方式はあまり向いてないみたい。 縮小が発生しない変換よりも縮小を伴う変換の方が何倍も時間かかる
たくさん処理すると30分とか平気で待たされる
これが10分になると有り難い 元のファイルがjpgじゃないと駄目だけど
本当は速いImageMagick: サムネイル画像生成を10倍速くする方法 - 昼メシ物語
http://blog.mirakui.com/entry/20110123/1295795409
あとは並列処理するとかかなあ 並列処理はしてるでしょ
4コアで普通に負荷100%になるよ magic.exeだけでconvertのコマンドもidentifyのコマンドも使えたのね
初めて知ったわ 2台のPCで片方のPCはconvertオプションで%指定通りにリサイズしてくれるんだけどもう片方の古いPCで同じコマンド投げたら 60%の %を無視して
60×比率固定pxのサイズで出力される謎
アプリのバージョンは同じ >>126
Windowsのbatだと%は%%って書いてエスケープしないと駄目だけどそれかな set x60=hoge
echo;60%x60%
60hoge
set x60=
echo;60%x60%
60%x60% bashで
#!/bin/bash
identify -verbose *.jpg | grep "Colorspace" > test.txt
でカラースペース情報
Colorspace: sRGB
出せるけど
hoge.txt Colorspace: sRGB
っていう出力にするにはどうすればいいだろ?
grepの-lオプションとかつけてもだめだった それテキストのソースが偶々imagemagickなだけで
完全スレ違いだろ hoge.txt が何処から沸いて出た分からないし答えられる人はいないだろうな ワロタw
しかし我が身を振り返って見て、その発達障害的思考は他人事とは思えない
おそらく君の望みは
grep -H
で解消されると思うぞw コマンドラインなしにimagemagickは語れないだろ
ちょい説明がおかしかったね
カレントフォルダにhoge.jpgってのがあるって設定
hoge.jpg Colorspace: sRGB
って出力したい
>132
(standard input): Colorspace: sRGB
ってでた for i in *.jpg;do echo -n $i; (identify -verbose $i | grep "Colorspace");done > test.txt
>>130 に同意する >134
できた
for使わないとだめなのね、ありがとう GIMPで編集したTIFF画像をconvertで-resizeするとボケます。
Photoshop Elementsなどで編集した場合はボケません。
この違いは何が原因なんでしょうか?
-unsharpを個別に判断するのではなく、一様に処理したいのですが… >136
Photoshop Elements使えばいいだろ >>136
一番の原因はGIMPで加えた透明のレイヤでした。
これがなければ他の場合に近くなりました。
それでも-resizeしたファイルサイズは1割ほど小さいですが。 inkscapeでSVG→PDF変換してるけど、ImageMagickでもできるのかな apngをリサイズしたいんだけど、phpでできますかあ?
アニメーション対応がgif しかなかったあ 出でよ!コアンヤァ!
/|
/| / |
∧无∧ /|/ |/ |/|
⊂( ´Д` ) / |_
〈 ⌒ | / /
(_)ノJ/______/ ImageMagick-liteとかないですか?jpegだけとかでいい。縮小切抜回転合成だけ。 沢山の画像フォーマットに対応すると脆弱性も増えるみたいだから特定の形式に絞ったものなんかは有用性あるんじゃないかな .png
.jpg
.tga
.bmp
これだけでいいよ 公開サービスにでも使ってんのかな
未発見の脆弱性とか気にしだしたらキリがないよ
世界中で動いてるwordpressなんて使用禁止だなw >>151
客先の契約サーバーが禁止とかし始めてんのよ。 古いのだとCPU 100%まで使ってくれるのに、
新しいのだとせいぜい50%くらいしか行かない
そして遅い
オプションか何かで高速化できる? montage -tile で並べる時に、
右から左に並べられないかな
縦書きの文章を並べたいんだけど ImageMagickにて、
「上から500px残してその下300pxを削除して残りの下部をつなげる」
といった処理を大量の画像に対して行いたいと思っています。
言い換えると
「画像の中央部分を削除して、上下を繋げる」
といった処理になります。
単一ファイル(001.png)に対しては、
magick 001.png -chop x300+0+500 001.jpg
でなんとかなるのですが、大量ファイルに一括処理する方法で困っています。
恥ずかしながらImageMagickは完全な初心者でして、
フォルダの指定などでも難航しており、
バッチ処理やコマンドなどを調べながらなんとかしようと思いましたが、
お手上げ状態となってしまっています・・・
(上記単一ファイルへのコマンドもIrfanViewスレにてご教示いただきました)
恐縮ではありますが、お力をお貸しいただけたらと思います。 元ファイルを残す
magick *.png -chop x300+0+500 after-%03d.png
元ファイルを変更
magick mogrify -chop x300+0+500 *.png >>157
ご丁寧にありがとうございます。
うまくいきました!
本当にありがとうございました! 質問
「2420x3246の元画像を左右それぞれ60pxほどトリミング後、左・中・右の3分割にしてそれらを縦に結合」
これをワンライナーでやりたいのですがどうすればいいのでしょうか
3段組みされた横書き記事(数十ページ)をOCRに読み込ませるのが目的です
バッチ処理にしたほうが速くて簡単かな… convert -crop
のgeometryはサイズ部分は%を付けるとパーセントで指定できる
50%x50%+0+0
シフト量部分もパーセントで指定したいけど、可能? >>160
できないから -crop を 2 回繰り返すしか無いと思う。 事前にindentifyで画像のサイズ取得して計算で出す もしかして -gravity を使ったことが無いとかw 何でそこにgravityが出てくるのかわからん
質問はどこかの端に寄せたい(n%xm%+0+0)ってわけじゃなく
n%xm%+s%+t% みたいなことが出来ないかって言ってるんだろ? ああcrop2回でgravityってのは左上・右下からって言いたいのか
それだと最初の画像のサイズのn%を2回目のcropで出すのは難しいぞ
既に画像のサイズが変化してるからな
そもそも%指定は端数が出るから事前計算して%使わずやるのが確実だよ 小学生レベルの幾何が難しいとかw
よっぽどの巨大画像で無い限り幅も高さも精々数千ピクセルなんだから、
パーセント指定に小数部が出たところで 5 桁くらい確保しておけば十分だろw 2回やるのは内部的な中間データでやれる?
1回目の結果を一旦ファイルに書き出すとしたら、あんまりスマートではない 例として、画像の左から 10%、上から 20% を空けて、50% × 50% の領域を切り出したいとする。
まず画像の右下角を基準に、90% × 80% の領域を crop する。
これで左から 10%、上から 20% の部分が取り除かれる。
次に左上角を基準に、55.555...% × 62.5% の領域を crop する。
数字が中途半端だがこれは最初の crop で画像サイズが変わっているためで、
元の画像から見れば 50% × 50% の領域に相当する。
convert 入力画像 -gravity southeast -crop 90%x80% +repage -gravity northwest -crop 55.555556%x62.5% 出力画像
途中で +repage を行っているのは、仮想キャンバスを切り抜き後の画像に合わせるため。
+repage の代わりに、前の -crop のサイズ指定の末尾に感嘆符 (!) を付けても良い。 なるほどな
判ってみれば、それしかないという気がしてきた へぇー初めて知った。
入力ファイルの代わりにURLを与えたら、そのまま通ってしまってびっくり。
magick https://5ch.net/images/5ch_mascot.png 出力画像.png
HTTP/HTTPS/FTPを受け付けることを確認。
自力でダウンロードしてるのか、裏でwgetか何かが動いてるのかは知らない。 Windows のペイント(mspaint)でさえ開くでURL指定すると読み込むんだしな 以前ドキュメントスキャナーでカラーpdfを作成しました。
カラーpdfをグレイスケールに変換すると、文字が一部くずれたりします。
convert -colorspace Gray -gamma 2.2 aaa.pdf ccc.pdf
グレイスケールへのオンラインpdf変換を使うと該当部分の文字もきれいに変換されます。
文章9割画像1割の300dpiのpdfをきれいにコンバートするにはどのようなパラメーターを
指定すればよいか詳しい方教えてください。 172です。
下記リンクが参考になりました。
ttps://superuser.com/questions/318586/how-to-convert-pdf-to-grayscale&usg=ALkJrhjrpkQDp394roQlwYQUAaU1wMsn-w
下記コマンドを実行すると、スキャンした写真や文章も綺麗にグレースケールになりました。
gs -o grayscale.pdf -sDEVICE=pdfwrite -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dCompatibilityLevel=1.4 genpon.pdf
コンバート中に下記のようなエラーはでます。文字化け部分は読めませんでした。
Can't find CID font "�l�r ����".
Attempting to substitute CID font /Adobe-Japan1 for /�l�r ����, see doc/Use.htm#CIDFontSubstitution.
上記gsコマンドと同等の結果をimagemagickのconvertで行うにはどのようなパラメータを
与えればよいか、わかる方教えていただけないでしょうか。
よろしくお願いします。 >>174
Ghostscript を入れてない Windows 環境の ImageMagick で PDF を読ませると
convert: FailedToExecuteCommand `"gswin32c.exe" ...'
としてエラーになるんだよね。
つまり、PDF のビットマップ化は Ghostscript に丸投げしているから、
その Ghostscript 側で解決する以外に方法は無いのでは、と。 >>175
レスありがとう。
すみません環境書いてませんでした。
ubuntu20.04ltsとimagemagik version7です。
gsでエラーは出ましたかが変換されたpdfは正常に読めました。
gsでは文字まで綺麗にカラーからグレイカラーに変換されました。imagemagikでもほぼ同等の変換させるには、どのようなパラメータを指定擦れは良いか教えてもらえないでしょうか。
よろしくお願いします。 >>172 の
> 以前ドキュメントスキャナーでカラーpdfを作成しました。
という部分を見過ごしていました。
PDF でも中身は 300 dpi の画像だけということですから
magick convert -density 300x300 入力ファイル名 -colorspace Gray 出力ファイル名
とすれば、おそらく画像がリサンプリングされることなく変換されると思います。
ImageMagick が内部に処理エンジンを持っているファイル形式であれば間違いなく
これで行けていますが、生憎 Ghostscript を動かせる環境を持っていないので、
ImageMagick との間で解像度や色空間の情報まで全て正しくやりとりできるかは判りません。 >>177
教えてくれてありがとうございます。
希望通りの出力がされました!!!
ものすごく助かりました。
一つだけ問題がありまして、1枚くらいなら問題なく変換できます。
200ページくらいの300dpiカラースキャンpdfを変換かけるとout of memoryで
終了してしまいます。当初4GBのUBUNTU仮想マシンだったのでそれが原因かなと
別PC(32GBメモリーあります。)にVMWAREに物理メモリー16GB割り当ててやっ
ても同じエラーが発生されます。
topコマンドでみると、最初gsが数分動作してその後convertが動作しているようです
convertの使用メモリがどんどんあがっていき16gくらいになるとout of memoryで強制終了されます。
回避方法があれば教えていただけないでしょうか。
よろしくお願いします。 convert -limit memory 32MiB -limit map 64MiB -density 300x300 mae.pdf -colorspace Gray outgray.pdf
ディスク容量を100GBくらいにして上記コマンドを実行したらエラーがでなくなりました。
変換後のグレーカラーの画質に関しては希望通りになりました。
ただ変換元のカラーPDFが90MBくらいのものが、グレーに変換後なぜか400MBくらいになります。
パラメータどこをいじればいいんでしょうか?
おしえてもらえないでしょうか、よろしくお願いします。 >>180
画像が無圧縮ないし可逆圧縮で PDF 内に書き込まれてしまっているためかも知れません。
-colorspace Gray と outgray.pdf との間に
-compress jpeg
-quality 90 (値はお好みで)
あたりを加えてみてはどうでしょうか。 >>181
何度もありがとうございます。
convert -limit memory 8GiB -limit map 2GiB -density 300x300 bike.pdf -colorspace Gray -compress jpeg -quality 30 outgray30.pdf
-quality 50くらいで変換前サイズとほぼ同等になりました。
格安のタブレットで見るために、サイズを小さくしたいので30くらいにしてみます。
quality30でも個人的には問題ありませんでした。
大量のカラー自炊pdfファイルがあったので、本当に助かりました。
ありがとうございました。 7.0.10-19(ImageMagick-7.0.10-19-portable-Q16-x64.zip)までは問題なく動作していたんですが、
7.0.10-20以降(ImageMagick-7.0.10-XX-portable-Q16-x64.zip)実行するとスタックするようになりました
同じような方いらっしゃらないでしょうか?
OS: Windows7 64bit >>185
7.0.10-33にバージョンアップしたところ正常に動作するようになりました
スレ汚し失礼しました >>186
修正されたと思ったんですが、スタックします‥
7.0.10.20以降、何か変わったんでしょうか? GPUを使ってくれるようなwindowsバイナリどっかに無い? >>123
うかつに ImageMagick に -define jpeg:size オプションをつけてはいけない
https://aoking.hatenablog.jp/entry/2014/11/26/110152
こんな記事も。随分前のレスだが見つけたので一応 そんなもんはソフト側で使えるコアは使って高速に処理するのが正しい
ワイルドカードでファイル指定してるんだから、ファイル毎に並列処理するだけ importコマンドでスクショ撮ってるんですが、このコマンドで生成される画像の画質ってどうやったら上がるんでしたっけ?
試しにdensityオプションを72から1200の範囲でいろいろ変えてみたんですが、ファイルサイズが変わらないので画質も変わってないと思われます >>197
使ってるよー
ただ使い方なんかは公式含め英語のリソースで事足りてるし、
ここに書くことは何も無いねー cropがうまくいかない
左右に2分割しようと convert -crop 50%x100% source source すると、
枝番ファイルが-0 -1 -2 の3つできてしまう
-0は狭く、-1は幅正常(位置がずれてる)し、半分にしたのならできないはずの-2ができてる
-0を実質50%にしようと%を変えてみたけど
54%指定で convert: geometry does not contain image source @ warning/transform.c/CropImage/668.
とエラーになる。(53%指定で実質46%程)
convert -crop WxH+WW+HH source output もうまくいかない時がある。
回避方法を知ってたら教えて下さい。
ImageMagick 6.9.12-48 Q16 x86_64 17235 なんかコマンドラインの順序がおかしいな
最初に入力画像を指定して (スタックに積んで)、次に積まれた画像に対する操作を順次記述して、
最後に出力ファイルを指定するのが正統じゃなかったか
convert 入力画像 -crop 50%x100% 出力画像
どちらにしても、それって画像に仮想的な余白が付いてたりして、
画像本体とvirtual canvas が一致してないときの動作なんだよね
-crop の前に +repage してみたらどうよ? 初回は無問題なのでどうやら一度convertコマンドを使ってできた画像にconvertすると出る不具合のようです。
素人考えですが convert と infinityで取得する情報に違いが生じてるような気がします。 だからその「一度convertコマンドを使ってできた画像」とやらから
余計なメタデータを削除し忘れてるんじゃないの すみません
キャンバスサイズと画像サイズの一致(=余計なメタデータの削除?)は毎回手動で行わないといけないものなのでしょうか? 皆さんって、limit memory付けてますか?つけないと重くなるってよく見るから疑問に思ってる。 limit memoryは知らんけど
convert -density 200 -quality 2 "${pdf}" "dest-${file_num}.png"
とやると操作が反応しなくなるほど重いけど
perlなどを使いforでまわして一枚ずつ処理すれば軽くなる
convert -density 200 -quality 2 "${pdf}[$i]" "dest-${file_num}.png" 機能に不満は無いけど遅い
折角GPU積んでるんだから活用して欲しい ImageMagick コマンドリファレンス
ttp://image-magick.com
ここあかんね、コマンドの引数の順序がおかしいページ多数
-size 等のごく一部のオプション以外、入力ファイルの前に指定したら駄目だ V6.9.12-68
V7.1.0-53が出ました ■ このスレッドは過去ログ倉庫に格納されています