mozjpegでJPEG画像のサイズを軽くするぞい!
mozjpegってやつが最高にロックらしくて手持ちのjpegを一括で変換させたいんだけどいんだけどコンパイルの基礎どころか意味すら理解できていないのでがんばるぞいしかない
— あんこ (@animencode) 2014, 9月 16
Mozilla、JPEGファイルの圧縮率を高めるプロジェクト「mozjpeg」を発表 - ITmedia ニュース
Mozillaは3月5日(現地時間)、新しいJPEGのエンコーダーを構築するプロジェクト「mozjpeg」を発表した。従来のJPEGとの互換性を保ちつつ、圧縮率を高めるのが目的という。
ソースは mozilla/mozjpeg · GitHub から。
ぼくのようにビルドってなんぞや?というじょうよゎな子は こちら からビルドされたものをDLしよう!
jpegtranで劣化させずに最適化
cjpeg: Jpeg圧縮(bmp,gif,pnm などから -> jpg)
djpeg: Jpeg展開(jpg から -> bmp,gif,pnm ..)
jpegtran: Jpegファイルに対して変換/変形
rdjpgcom: Jpegファイル操作
wrjpgcom: Jpegファイル操作
jpegtran.exeはJPEGを再圧縮せずに変換するプログラムらしい。
なので、それを使ってコマンドラインで変換。
JPEGをさらに高圧縮する「mozjpeg 2.0」で2GB超の画像ファイルを圧縮 - GIGAZINE
jpegtran.exe -outfile "output.jpg" -optimise -copy none "input.jpg"
参考リンク
-
IdleTime Web版 mozjpeg Ver2.01(ブラウザ上で変換できます)
オマケのバッチファイル
mozjpeg_optimize.bat
jpegtran.exeと同じフォルダに置いて、JPEGファイルをDrag&Dropすると変換。
(メモ帳などにD&Dして、.bat拡張子で保存してください)
@echo off
cd /d "%~dp0"
if "%~1" == "" goto error
mkdir "%~dp1mozjpeg\"
echo mozjpegで変換します。
jpegtran.exe -optimize -outfile "%~dp1mozjpeg\%~n1_mozjpeg.jpg" "%~dp1%~n1.jpg"
echo 処理を完了しました。
master_mozjpeg_optimize.bat
mozjpeg_optimize.bat jpegtran.exe と同じフォルダに置いて、JPEGファイルをDrag&Dropすると そのファイルを含むフォルダ内のJPEGファイルを一括変換します。
※赤字の部分はパスに合わせて書き換えてね!
@echo off
:first
set LIST=
for %%i in ("%~dp1*.jpg") do set LIST=%LIST%%%iecho ****************************************************************
:mozjpeg
if not exist "%LIST%" goto endecho Start %LIST% %time%
echo ****************************************************************
echo.
call "C:convert\mozjpeg\mozjpeg_optimize.bat" "%LIST%"
ping localhost -n 6 >nul
echo.
echo.
echo ****************************************************************
echo End %LIST% %time%
ping localhost -n 6 >nul
echo.mkdir "%~dp1move\"
move "%LIST%" "%~dp1move\"
ping localhost -n 6 >nulset LIST=
for %%i in ("%~dp1*.jpg") do set LIST=%LIST%%%i
ping localhost -n 6 >nulecho.
rem shift
rem goto 720
:stockset LIST=
for %%i in ("%~dp1*.jpg") do set LIST=%LIST%%%imove "%LIST%" "%~dp1"
set LIST=
for %%i in ("%~dp1*.jpg") do set LIST=%LIST%%%i
ping localhost -n 6 >nulif exist "%LIST%" (goto mozjpeg) else (goto end)
:end
echo ****************************************************************
echo すべてのエンコード処理が完了しました。
echo ****************************************************************
echo.
pause
goto first
バッチ作成にあたって参考にさせていただきました!