用 Linux 命令优化网页图片
创始人
2024-03-02 09:31:52
0

为网页上的缩略图和横幅图片生成经过调整和优化的图片。

以前我在处理网页工作时,我对图像敬而远之。处理和优化图像既不精确又费时。

后来我发现了一些命令,改变了我的想法。为了创建网页,我使用 Jekyll,所以我在说明中包括了它。然而,这些命令也可以用于其他静态网站生成器。

Linux 上的图像命令

对我来说有用的命令是 optipngjpegoptim,当然还有古老的 imagemagick。它们一起使处理图像变得容易管理,甚至可以自动化。

下面是我如何使用这些命令实现我的解决方案的概述。我把文章图片放在我的 static/images 文件夹中。在那里,我生成了所有 PNG 和 JPG 图片的两个副本:

  1. 一个裁剪过的缩略图版本,尺寸为 422×316
  2. 一个更大的横幅版本,尺寸为 1024×768

然后,我把每个副本(缩略图和横幅)放入自己的文件夹,并利用 Jekyll 的自定义变量来确定文件夹路径。下面我将更详细地介绍这些步骤中的每一步。

安装

要跟上我的解决方案,请确保你已经安装了所有的命令。在 Linux 上,你可以使用软件包管理器安装 optipngjpegoptimimagemagick

在 Fedora、CentOS、Mageia 和类似系统上:

$ sudo dnf install optipng jpegoptim imagemagick

在 Debian、Elementary、Mint 和类似系统上:

$ sudo apt install optipng jpegoptim imagemagick

在 macOS 上,使用 MacPortsHomebrew

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/

处理缩略图

为了调整和优化缩略图的大小,我使用了三个命令。

我使用 ImageMagickmogrify 命令来调整 JPG 和 PNG 的大小。因为我希望缩略图是 422×316,所以命令看起来像这样:

$ cd img-thumbs
$ mogrify -resize 422x316 *.png
$ mogrify -format jpg -resize 422x316 *.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 1024x768 *.png
$ mogrify -format jpg -resize 1024x768 *.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.banner_img %}
 Banner image for \
{{ page.title }}
{% endif %}

总结

我可以对我的优化命令做几个改进。

使用 rsync 只复制改变过的文件到 img-thumbsimg-normal 是一个明显的改进。这样一来,我就不会一次又一次地重新处理文件。将这些命令添加到 Git 提交前钩子 或 CI 流水线中是另一个有用的步骤。

调整和优化图像以减少其大小,对用户和整个网页来说都是一种胜利。也许我减少图片尺寸的下一步将是 webp

更少的字节通过电线传输意味着更低的碳足迹,但这是另一篇文章。目前,用户体验的胜利已经足够好了。

本文原载于作者的博客,已获授权转载。


via: https://opensource.com/article/21/12/optimize-web-images-linux

作者:Ayush Sharma 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

每日一图 丨 《AI 作文...
干脆让 AI 帮你署名吧 图片来源网络
2026-01-06 14:46:42
摄影大赛一等奖疑似AI生成...
近日,福建一摄影大赛公布评选结果,其中,大赛一等奖作品《湖秋雾影》...
2025-12-31 10:18:32
摄影大赛一等奖作品疑似AI...
近日,福建一摄影大赛公布评选结果,其中,大赛一等奖作品《湖秋雾影》...
2025-12-30 16:46:21
阿里千问紧急辟谣:图片完全...
千问全员会集体吃豆包? 今天(12月19日)下午,南都N视频记者注...
2025-12-19 20:46:30
AI无限拉低了普通人造假的...
文 | 镜相工作室,作者丨黄依婷,编辑丨卢枕 在很多人的印象里,...
2025-12-19 17:45:38
图片一键变身高精度3D模型...
IT之家 12 月 18 日消息,日前,微软开源了最新的 AI 工...
2025-12-18 18:16:24

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...