为网页上的缩略图和横幅图片生成经过调整和优化的图片。
以前我在处理网页工作时,我对图像敬而远之。处理和优化图像既不精确又费时。
后来我发现了一些命令,改变了我的想法。为了创建网页,我使用 Jekyll,所以我在说明中包括了它。然而,这些命令也可以用于其他静态网站生成器。
Linux 上的图像命令
对我来说有用的命令是 optipng
、jpegoptim
,当然还有古老的 imagemagick
。它们一起使处理图像变得容易管理,甚至可以自动化。
下面是我如何使用这些命令实现我的解决方案的概述。我把文章图片放在我的 static/images
文件夹中。在那里,我生成了所有 PNG 和 JPG 图片的两个副本:
- 一个裁剪过的缩略图版本,尺寸为 422×316
- 一个更大的横幅版本,尺寸为 1024×768
然后,我把每个副本(缩略图和横幅)放入自己的文件夹,并利用 Jekyll 的自定义变量来确定文件夹路径。下面我将更详细地介绍这些步骤中的每一步。
安装
要跟上我的解决方案,请确保你已经安装了所有的命令。在 Linux 上,你可以使用软件包管理器安装 optipng
、jpegoptim
和 imagemagick
。
在 Fedora、CentOS、Mageia 和类似系统上:
“`
$ sudo dnf install optipng jpegoptim imagemagick
“`
在 Debian、Elementary、Mint 和类似系统上:
“`
$ sudo apt install optipng jpegoptim imagemagick
“`
在 macOS 上,使用 MacPorts 或 Homebrew:
“`
brew install optipng jpegoptim imagemagick
“`
在 Windows 上,使用 Chocolatey。
为缩略图和横幅创建文件夹
安装完这些命令后,我在 static/images
下创建了新的文件夹。生成的缩略图放在 img-thumbs
,横幅放在 img-normal
。
“`
$ cd static/images
$ mkdir -p img-thumbs img-normal
“`
创建了文件夹后,我把所有的 GIF、SVG、JPG 和 PNG 文件复制到这两个文件夹。我把 GIF 和 SVG 原封不动地用于缩略图和横幅图片。
“`
$ cp content/.gif img-thumbs/; cp content/.gif img-normal/
$ cp content/.svg img-thumbs/; cp content/.svg img-normal/
$ cp content/.jpg img-thumbs/; cp content/.jpg img-normal/
$ cp content/.png img-thumbs/; cp content/.png img-normal/
“`
处理缩略图
为了调整和优化缩略图的大小,我使用了三个命令。
我使用 ImageMagick
的 mogrify
命令来调整 JPG 和 PNG 的大小。因为我希望缩略图是 422×316,所以命令看起来像这样:
“`
$ cd img-thumbs
$ mogrify -resize 422×316 *.png
$ mogrify -format jpg -resize 422×316 *.jpg
“`
现在我用 optipng
优化 PNG,用 jpegoptim
优化 JPG:
“`
$ for i in *.png; do optipng -o5 -quiet “$i”; done
$ jpegoptim -sq *.jpg
“`
在上述命令中:
- 对于
optipng
,-o5
开关设置了优化的级别,0 是最低的。 - 对于
jpegoptim
,-s
剥离所有图像元数据,-q
设置安静模式。
处理横幅
我处理横幅图片的方法与处理缩略图的方法基本相同,除了尺寸外,横幅图片的尺寸为 1024×768。
“`
$ cd ..
$ cd img-normal
$ mogrify -resize 1024×768 *.png
$ mogrify -format jpg -resize 1024×768 *.jpg
$ for i in *.png; do optipng -o5 -quiet “$i”; done
$ jpegoptim -sq *.jpg
“`
配置 Jekyll 中的路径
img-thumbs
目录现在包含我的缩略图,img-normal
包含横幅。为了更轻松一些,我在Jekyll的 _config.yml
中把它们都设置为自定义变量。
“`
content-images-path: /static/images/img-normal/
content-thumbs-images-path: /static/images/img-thumbs/
“`
使用这些变量很简单。当我想显示缩略图时,我把 content-thumbs-images-path
加到图片上。当我想显示完整的横幅时,我在前面添加 content-images-path
。
“`
{% if page.bannerimg %}