goo blog サービス終了のお知らせ 

WindowsでPNGのZIPをJPEGのJIPにする

2021-01-28 22:56:57 | Weblog

使用ツール:ImageMagick, 7za(7zipのコマンドラインツール)

Windowsのバッチで、PNGのZIPファイルを解凍、JPEGに変換してからZIPファイルにする。1つのzipファイルの変換しかできない。

ImageMagickでサブフォルダに出力する方法が分からない(うまく行かない)ので、jpegファイルをバッチファイルのあるフォルダに作成→出力用フォルダを作成→moveコマンドでjpegファイルを出力用フォルダに移動、という面倒なことをやっている。

ImageMagickの出力指定で3桁の数字をファイル名にするため、 %%03d.jpg としているのだが、 %03d.jpg ではなく、 %% としないと認識してくれない(シェル展開? エスケープ?)。ネットちょろっと調べたけどこんな風に書いてるのはどこにもなかったけどこうしないと動かない。なぜだ。

7zaはパス通してないので、c:\programpath\7za.exe と直接指定して起動している。

ファイル名に「&」含むとエラーになる。他にも「\」とかダメそう。

そもそも何でこんなことするかといえば、iPadでスクショ撮ってzip化したファイルがたくさんあったから。iPadOSのzipファイルって7zaで解凍すると、ファイル名の頭に「.」のついたファイルが生成されちゃう。これを除くために、magickの入力ファイル指定で「IMG_*.png」と指定している。

結果、掛け算分からなくて足し算使ってるみたいなことになった。

@echo off

cd /d "%~dp0"

set inputpath=%~dp0src\
set inputfile=%~dpnx1
set outpath=%~dp0%~n1

c:\programpath\7za\7za.exe e -o"%inputpath%" "%inputfile%" >nul

magick %inputpath%IMG_*.png -quality 85 %%03d.jpg

mkdir "%outpath%"
move "%~dp0*.jpg" "%outpath%" >nul

c:\programpath\7za\7za.exe a "%outpath%_JPEG.zip" "%outpath%\*.jpg"

rmdir "%inputpath%" /s /q
rmdir "%outpath%" /s /q

pause


最新の画像もっと見る