我正在嘗試制作一個批處理檔案來壓縮和調整一些影像的大小。它們是JPG和PNG。檔案大小不同,但我只想修改大檔案。
如果可能的話,我想為我正在探索的每個選項提供答案。
選項 1:簡單
正如上面的描述,我使用了一些基本命令來實作這一點。
@echo off
for %%f IN (*.jpg *.png) DO magick mogrify -quality 70 -resize 960x540^\> "%%f" "%%f"
我相信問題出在^\>. 我只希望它調整較大檔案的大小并適合最小尺寸。但是,我找不到同時存在這兩種情況的方法。另外,我不能只>作業(所以我不確定我是否偏離了軌道)。
選項 2:復雜
這家伙對調整影像大小(和壓縮)的最佳方法進行了相當不錯的分析。這導致我將它加入到我的代碼中以創建...
@echo off
for %%f IN (*.jpg *.png) DO magick mogrify -filter Triangle -define filter:support=2
-thumbnail 500 -unsharp 0.25x0.08 8.3 0.045 -dither None -posterize 136 -quality 82
-define jpeg:fancy-upsampling=off -define png:compression-filter=5
-define png:compression-level=9 -define png:compression-strategy=1
-define png:exclude-chunk=all -interlace none -colorspace sRGB "%%f" "%%f"
[為更好地觀看而進行了手動中斷。]
我唯一無法在這里作業的是僅更改大于 500 像素(>)的檔案的條件。這可能與我上面遇到的問題相同。
我希望這是一個簡單的解決方案。我確實嘗試查看檔案,但沒有發現任何特別有用的東西(不超過通知我條件的代碼)。
感謝您的幫助。
uj5u.com熱心網友回復:
在 Imagemagick 的 DOS Windows 中,請參閱https://legacy.imagemagick.org/Usage/windows/#conversion,其中顯示:
如果按字面意義使用(即不滿足其通常用途),則所有不在雙引號中的保留 shell 字符必須用 '^'(插入符號或抑揚符)轉義。這些保留的 shell 字符是:'&'、'|'、'('、')'、'<'、'>'、'^'。
這尤其意味著:特殊字符“>”(用于調整幾何大小)需要使用“^”進行轉義。例如 -resize 100x100^>。
同樣,“內部適合調整大小”標志“^”需要加倍才能變為“^^”。
因此,您可以使用雙引號(并且沒有轉義):
-resize "960x540^>"
或者您可以將 ^ 和 > (并且沒有引號)轉義為:
-resize 960x540^^^>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/482012.html
