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

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

新規登録して質問してみよう
ただいま回答率
85.50%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

Q&A

解決済

1回答

4953閲覧

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

ZZ-TOP

総合スコア36

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

ImageMagick

ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

0グッド

0クリップ

投稿2018/03/14 06:54

編集2018/03/14 07:37

お世話になります

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 ) ) ``````ここに言語を入力 コード

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

たとえば、cnv.bat というファイルを作ったとすれば、

cnv a.png b.png c.png ...

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

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

投稿2018/03/14 07:10

編集2018/03/14 07:23
y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ZZ-TOP

2018/03/14 08:19

ご解答ありがとうございます。 #ちゃんと動くかどーかはImagemagic 持ってないのでわかりません ↓ 追記して頂きありがとうございます。 画像の通りエラーが出たのですが、 動作確認済みのImagemagickのコマンドで再度、確認したところ アドバイス通りの操作で正常に作動しました。 Imagemagick、元のbatファイル、の修正、etc.がわかりましたら まとめて更新します。 取り急ぎ、お礼を記載させて頂きます。 今回はご解答頂き、ありがとうございます。 ものすごく助かりました。
y_waiwai

2018/03/14 08:25

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

2018/03/14 08:43

何度もアドバイスして頂き、本当にありがとうございます。 まとめます。 1)テキストファイルで上記のコードをコピーして、「rszpng.bat」の名前でファイルを作成する ※「setlocal enabledelayedexpansion」は不要なので削除する! 2)「rszpng.bat」はわかりやすい場所に保存する  ※Imagemacgickの場合、処理する画像と同じフォルダがいい 3)DOS窓で「rszpng.bat」のあるディレクトリ(フォルダ)まで移動する 4)DOS窓で「rszpng.bat」を打ち込んで、enterキーで実行する 以上です。上記のURLにはダウンロードする機能があるのですが、 ダウンロードすると、なぜか冒頭に「setlocal enabledelayedexpansion」があります。 これを削除すると普通に動作しました。 今回はご解答頂きありがとうございます。機会がありましたら、またお願いします。 本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問