服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 用 Linux 命令优化网页图片

用 Linux 命令优化网页图片

2021-12-21 00:57Linux中国LCTT geekpi 译 Linux

为了创建网页,我使用 Jekyll,所以我在说明中包括了它。然而,这些命令也可以用于其他静态网站生成器。

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

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

用 Linux 命令优化网页图片

Linux 上的图像命令

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

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

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

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

安装

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

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

  1. $ sudo dnf install optipng jpegoptim imagemagick 

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

  1. $ sudo apt install optipng jpegoptim imagemagick 

在 macOS 上,使用 MacPorts 或 Homebrew:

  1. brew install optipng jpegoptim imagemagick 

在 Windows 上,使用 Chocolatey。

为缩略图和横幅创建文件夹

安装完这些命令后,我在 static/images 下创建了新的文件夹。生成的缩略图放在 img-thumbs,横幅放在 img-normal。

  1. $ cd static/images 
  2. $ mkdir -p img-thumbs img-normal 

创建了文件夹后,我把所有的 GIF、SVG、JPG 和 PNG 文件复制到这两个文件夹。我把 GIF 和 SVG 原封不动地用于缩略图和横幅图片。

  1. $ cp content/*.gif img-thumbs/; cp content/*.gif img-normal/ 
  2. $ cp content/*.svg img-thumbs/; cp content/*.svg img-normal/ 
  3. $ cp content/*.jpg img-thumbs/; cp content/*.jpg img-normal/ 
  4. $ cp content/*.png img-thumbs/; cp content/*.png img-normal/ 

处理缩略图

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

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

  1. $ cd img-thumbs 
  2. $ mogrify -resize 422x316 *.png 
  3. $ mogrify -format jpg -resize 422x316 *.jpg 

现在我用 optipng 优化 PNG,用 jpegoptim 优化 JPG:

  1. $ for i in *.png; do optipng -o5 -quiet "$i"; done 
  2. $ jpegoptim -sq *.jpg 

在上述命令中:

  • 对于 optipng,-o5 开关设置了优化的级别,0 是最低的。
  • 对于jpegoptim,-s 剥离所有图像元数据,-q 设置安静模式。

处理横幅

我处理横幅图片的方法与处理缩略图的方法基本相同,除了尺寸外,横幅图片的尺寸为 1024×768。

  1. $ cd .. 
  2. $ cd img-normal 
  3. $ mogrify -resize 1024x768 *.png 
  4. $ mogrify -format jpg -resize 1024x768 *.jpg 
  5. $ for i in *.png; do optipng -o5 -quiet "$i"; done 
  6. $ jpegoptim -sq *.jpg 

配置 Jekyll 中的路径

img-thumbs 目录现在包含我的缩略图,img-normal 包含横幅。为了更轻松一些,我在Jekyll的 _config.yml 中把它们都设置为自定义变量。

  1. content-images-path: /static/images/img-normal/ 
  2. content-thumbs-images-path: /static/images/img-thumbs/ 

使用这些变量很简单。当我想显示缩略图时,我把 content-thumbs-images-path 加到图片上。当我想显示完整的横幅时,我在前面添加 content-images-path。

  1. {% if page.banner_img %} 
  2.  <img src="{{ page.banner_img | prepend: site.content-images-path | \ 
  3. prepend: site.baseurl | prepend: site.url }}" alt="Banner image for \ 
  4. {{ page.title }}" /> 
  5. {% endif %} 

总结

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

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

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

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

原文链接:https://linux.cn/article-14096-1.html

延伸 · 阅读

精彩推荐
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30