如果我有一个包含数百张图片的文件夹,其中一些图片的宽度大于高度,我希望能够轻松旋转宽图片,使所有内容都垂直。目前,我必须浏览缩略图并手动翻转所有水平图像。
我曾看到过与此相关的“shell 脚本”和“imagemagick”,但我不知道如何在 Windows 7 上使用它们。我怎样才能制作一个批处理文件之类的东西,我可以轻松地将它放在文件夹中,并让它为我完成所有工作?
答案1
处理 .jpg(旋转)会降低其质量,因此最好从不要覆盖开始。
来自批处理文件。不要覆盖原件。顺时针旋转 90 度:
@echo off
SETLOCAL ENABLEEXTENSIONS
md "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\rotated\"
for /f "tokens=*" %%x in ('dir /b "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\*.jpg"') do "path-to-imagemagick\convert.exe" "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\%%x" -rotate "90>" "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\rotated\%%x"
exit /b
例如:
@echo off
SETLOCAL ENABLEEXTENSIONS
md "%USERPROFILE%\Desktop\New folder\rotated\"
for /f "tokens=*" %%x in ('dir /b "%USERPROFILE%\desktop\new folder\*.jpg"') do "%ProgramFiles%\ImageMagick-7.0.7-Q16\convert.exe" "%USERPROFILE%\desktop\new folder\%%x" -rotate "90>" "%USERPROFILE%\desktop\new folder\rotated\%%x"
exit /b
来自批处理文件。覆盖原始文件。顺时针旋转 90 度:
@echo off
SETLOCAL ENABLEEXTENSIONS
for /f "tokens=*" %%x in ('dir /b "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\*.jpg"') do "path-to-imagemagick\convert.exe" "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\%%x" -rotate "90>" "path-to-parent-folder-with-double-quotes-if-there-is-a-space-in-the-path\%%x"
exit /b
例如:
@echo off
SETLOCAL ENABLEEXTENSIONS
for /f "tokens=*" %%x in ('dir /b "%USERPROFILE%\desktop\new folder\*.jpg"') do "%ProgramFiles%\ImageMagick-7.0.7-Q16\convert.exe" "%USERPROFILE%\desktop\new folder\%%x" -rotate "90>" "%USERPROFILE%\desktop\new folder\rotated\%%x"
exit /b
一个顺时针旋转 90 度并覆盖启动目录中每个 .jpg 的 Windows 快捷方式:
cmd /c for /f "tokens=*" %x in ('dir /b *.jpg') do "%ProgramFiles%\ImageMagick-7.0.7-Q16\convert.exe" "%x" -rotate "90>" "%x"
一个 Windows 快捷方式顺时针旋转 90 度并覆盖其启动目录和所有子目录中的每个 .jpg:
cmd /c for /f "tokens=*" %x in ('dir /b /s *.jpg') do "%ProgramFiles%\ImageMagick-7.0.7-Q16\convert.exe" "%x" -rotate "90>" "%x"
顺时针旋转 90 度
-rotate "90>"
逆时针旋转 90 度
-rotate "-90>"
对图像应用路径图像旋转(使用剪切操作)。使用 > 仅在图像宽度超过高度时旋转图像。< 仅在图像宽度小于高度时旋转图像。例如,如果您指定 -rotate "-90>" 并且图像大小为 480x640,则图像不会旋转。但是,如果图像为 640x480,则图像会旋转 -90 度。如果您使用 > 或 <,请将其括在引号中,以防止被误解为文件重定向。角落中的空三角形是旋转图像后留下的,将用背景颜色填充。以上来自这里。
另请参阅-歪曲操作符,特别是‘ScaleRotateTranslate’扭曲方法。
有关使用 imagemagick 命令行处理的更多信息,请参阅这里