質問: お世話になります Imagemagickを使ってフォルダー内にある全てのpngファイルの長辺を900pxにしたいと思っています。 いつもは画像の向きを全部横長に統一して以下のコマンドをDOS窓に貼り付けて処理しています。 ※もちろんディレクトリを移動してからです mogrify -resize 900x *.png ですが長辺を900pxにする方法を調べたところ、以下のページがHitしました。 このページによるとフォルダー内に縦長の画像と横長が混じっていても、 記載されているコードで処理すると長辺が900pxになると書いてあります。 ※私はそう思います。私の解釈が間違えていたら教えて下さい。 ↓ 同じディレクトリのpng画像を長辺900pxにリサイズするbatファイル https://gist.github.com/smison/4400e25eef69981c160b ~リサイズするbatファイル このコードを使ってみたいのですが、batファイルの操作を行ったことがないため、 ページに記載されているコードの使い方がわかりません。 ※コピーして貼り付けてみましたがエラーで動きません。 自分なりに調べてみたのですが、どういう知識が足りなくて、 何から勉強していいのか全くわからない状況です。 こういう状況ですので、すいませんがDOS窓にペーストしたら 「フォルダーの中のpngファイルの長辺を全て900pxにする」 Imagemagickのコマンドを教えて下さい。 こちらの知識、環境は以下のような感じです。 Imagemagickの環境、普段の使い方 ※インストール済み 1)フォルダー(ディレクトリ)内のpngファイルの幅を全部900pxにする ↓ mogrify -resize 900x *.png ※縦長の画像は画像処理ソフトで90度回転させて横長にしてから処理しています。 ※縦長の画像の数が多い時は別フォルダーに別けて、 ↓ mogrify -resize x900 *.png で処理しています。 2)フォルダー内の全ての画像(png)の幅を900pxにして枠をつける ↓ mogrify -resize 900x -bordercolor "#808080" -border 5x5 *.png 4)1個の画像に枠を付ける ↓ convert Image45.jpg -bordercolor "#023C14" -border 5x5 Image45A.jpg こんな感じです。 すいませんが具体的にコードで解答できる方、Imagemagickの 「フォルダーの中のpngファイルの長辺を全て900pxにする」ための コマンドを教えて下さい。 参考にしたコードは先のページにあります。 ※一応、コードも貼り付けておきます。 追記 1) ご解答頂いてもすぐに応答できず、数日後に応答する場合があります。 ご了承の上、ご解答お願いします。 2) 理想は「フォルダー内の画像(png)全て」ですが、不可なら画像1枚だけでもOKです。 →縦長、横長どちらでも長辺を900pxにする ImageMagick、バッチファイルの操作に詳しい方、よろしくお願いします。 ``` setlocal enabledelayedexpansion for %%f in (*.png) do ( REM 画像の縦幅を取得 for /f "usebackq tokens=*" %%i in (`identify -format '%%h' %%f`) do @set HEIGHT=%%i REM 画像の横幅を取得 for /f "usebackq tokens=*" %%i in (`identify -format '%%w' %%f`) do @set WIDTH=%%i if !HEIGHT! GEQ !WIDTH! ( REM 縦幅 >= 横幅 convert -resize x900 %%f %%~nf_resized.png ) else ( REM 縦幅 < 横幅 convert -resize 900x %%f %%~nf_resized.png ) ) ``` `ここに言語を入力 コード` ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/c7dfd9908c652ae685646416d792b855.jpeg)
回答: そのコードを、拡張子をBATにしたテキストファイルを作って、コマンドプロンプトから実行します たとえば、cnv.bat というファイルを作ったとすれば、 >cnv a.png b.png c.png ... と画像ファイルを並べていけば実行できます #ちゃんと動くかどーかはImagemagic 持ってないのでわかりません