使用 ImageMagik 脚本调整图像大小

自动调整图片大小以适应静态网站

目录

Mainroad 主题在 Hugo 中不会自动调整图片大小,
just copies from static folder
因此我们需要准备脚本来调整和裁剪图片到合适的尺寸。

678x495 wizard

何时使用

我有多个图片来源,智能手机和相机是最常用的。
它们的分辨率和宽高比各不相同。

因此我们需要一个处理流程:

  • 中心裁剪到目标宽高比
  • 调整(缩小)到 两个分辨率。JPEG 质量 80% 已经足够。
    • 235x171
    • 678x495

何处使用

假设所有源图片都在文件夹 ~/tmp/img_src 中
我们需要:

  • 将处理后的图片移动到文件夹 ~/tmp/img_235x171 和 ~/tmp/img_678x495
  • 将图片命名为 _235x171.jpg 和 _678x495.jpg

如何操作

在 Ubuntu Linux 中,我们将使用 imagemagick

sudo apt-get install imagemagick

裁剪步骤:

convert wizard.png -gravity center -extent 11:8 wizarc.jpg
# 现在检查几何信息
identify wizard.png wizarc.jpg

调整大小步骤

convert wizarc.jpg -resize 678x495 -quality 80 -interlace plane wizarc_678x495.jpg
convert wizarc.jpg -resize 235x171 -quality 80 -interlace plane wizarc_235x171.jpg
# 现在检查几何信息
identify wizarc.jpg wizarc_678x495.jpg wizarc_235x171.jpg

80 是 JPEG 的质量,plane 表示渐进式 JPEG。
这将有助于在慢速连接下更快加载图片,
不仅仅是因为首先加载的是缩略图,而且文件本身更小。至少在巫师的案例中是这样。

带边框的调整

convert wizarc.jpg -resize 676x493 -quality 80 -interlace plane -border 1x1 wizarc_678x495.jpg
convert wizarc.jpg -resize 233x169 -quality 80 -interlace plane -border 1x1 wizarc_235x171.jpg
# 现在检查几何信息
identify wizarc.jpg wizarc_678x495.jpg wizarc_235x171.jpg

你在这篇文章开头看到的图片和源图片的比例如下:

20% of the wizard

这是经过简单缩放和添加边框后的结果

convert wizard.png -resize 20% -quality 85 -interlace plane -border 2x2 wizard20.jpg

其他选项

nautilus-image-converter

nautilus-image-converter 是一个用于批量调整大小或旋转图片的 nautilus 扩展。要在所有当前支持的 Ubuntu 版本中安装 nautilus-image-converter,打开终端并输入:

sudo apt-get install nautilus-image-converter

它会在 nautilus 中添加两个上下文菜单项,你可以右键点击并选择“调整图片大小”。(另一个是“旋转图片”)。

你可以一次性处理整个目录中的图片,而且甚至不需要打开任何应用程序。

你需要重新启动 nautilus 才能看到新的上下文菜单,运行

nautilus -q

然后点击“主页”文件夹图标以重新加载 nautilus 并使用新插件。

mogrify

命令 mogrify 会用调整后的图片覆盖原始文件:

mogrify -resize 50% *.png # 保持图片宽高比 mogrify -resize 320x240 *.png # 保持图片宽高比 mogrify -resize 320x240! *.png # 不保持图片宽高比 mogrify -resize x240 *.png # 不保持图片宽高比 mogrify -resize 320x *.png # 不保持图片宽高比

其他有用的工具

获取图片的元数据信息,例如分辨率、位深度等,这些是 imagemagick 包的一部分。

identify image.jpg 

将输出类似以下内容:

image.jpg JPEG 720x482 720x482+0+0 8-bit DirectClass 100KB 0.000u 0:00.009

将图片转换为 PDF

convert $(ls -v *.jpg) foobar.pdf
convert $(ls -v *.png) foobar.pdf

有用的链接