質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.97%

画像の長辺を900pxにしたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,736

ZZ-TOP

score 34

お世話になります

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
  )
)

ここに言語を入力 コード
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

そのコードを、拡張子をBATにしたテキストファイルを作って、コマンドプロンプトから実行します

たとえば、cnv.bat というファイルを作ったとすれば、
>cnv a.png b.png c.png ...

と画像ファイルを並べていけば実行できます

#ちゃんと動くかどーかはImagemagic 持ってないのでわかりません

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/14 17:19

    ご解答ありがとうございます。

    #ちゃんと動くかどーかはImagemagic 持ってないのでわかりません

    追記して頂きありがとうございます。

    画像の通りエラーが出たのですが、
    動作確認済みのImagemagickのコマンドで再度、確認したところ
    アドバイス通りの操作で正常に作動しました。

    Imagemagick、元のbatファイル、の修正、etc.がわかりましたら
    まとめて更新します。

    取り急ぎ、お礼を記載させて頂きます。
    今回はご解答頂き、ありがとうございます。
    ものすごく助かりました。

    キャンセル

  • 2018/03/14 17:25

    ああ、BATファイルがあるフォルダ以外で実行しようとしても見つけられないので実行できません
    その実行しようとしてるフォルダにそのBATファイルをコピーして実行しましょう

    キャンセル

  • 2018/03/14 17:43

    何度もアドバイスして頂き、本当にありがとうございます。
    まとめます。

    1)テキストファイルで上記のコードをコピーして、「rszpng.bat」の名前でファイルを作成する
    ※「setlocal enabledelayedexpansion」は不要なので削除する!
    2)「rszpng.bat」はわかりやすい場所に保存する 
    ※Imagemacgickの場合、処理する画像と同じフォルダがいい
    3)DOS窓で「rszpng.bat」のあるディレクトリ(フォルダ)まで移動する
    4)DOS窓で「rszpng.bat」を打ち込んで、enterキーで実行する

    以上です。上記のURLにはダウンロードする機能があるのですが、
    ダウンロードすると、なぜか冒頭に「setlocal enabledelayedexpansion」があります。
    これを削除すると普通に動作しました。

    今回はご解答頂きありがとうございます。機会がありましたら、またお願いします。
    本当に助かりました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.97%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる