使用 ImageMagik 脚本调整图像大小
自动调整图片大小以适应静态网站
Mainroad 主题在 Hugo 中不会自动调整图片大小,
just copies from static folder。
因此我们需要准备脚本来调整和裁剪图片到合适的尺寸。
何时使用
我有多个图片来源,智能手机和相机是最常用的。
它们的分辨率和宽高比各不相同。
因此我们需要一个处理流程:
- 中心裁剪到目标宽高比
- 调整(缩小)到 两个分辨率。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
你在这篇文章开头看到的图片和源图片的比例如下:
这是经过简单缩放和添加边框后的结果
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