Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介

ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换,可以处理超过100种图像格式,包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作,即可以通过命令行进行,也可以用C/C++、Perl、Java、PHP、Python或Ruby编程来完成。

二、ImageMagick安装

1.打开终端并执行以下命令,安装ImageMagick的依赖库。

sudo apt-get install build-essential sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libgif-dev libwebp-dev sudo apt-get install webp

2.下载ImageMagick的源码包,可以在官网(https://imagemagick.org)上找到最新的稳定版本,也可以在github上下载。

官网下载:
https://www.imagemagick.org/download/ImageMagick.tar.gz

github下载:
https://github.com/ImageMagick/ImageMagick

在这里插入图片描述
在这里插入图片描述

假设下载的文件名为:ImageMagick-X.X.X.tar.gz,执行以下命令解压缩和安装:

tar xf ImageMagick-X.X.X.tar.gz
cd ImageMagick-X.X.X
./configure
sudo make install

3.安装完毕后,可以执行以下命令验证是否安装成功。

magick --version

如果出现下面错误:

magick: error while loading shared libraries: libMagickCore-7.Q16HDRI.so.10: cannot open shared object file: No such file or directory 

需要执行以下命令:

echo "/usr/local/lib" >>sudo  /etc/ld.so.conf
sudo ldconfig

在这里插入图片描述

再次验证是否安装成功:
magick --version

可以看到输出了ImageMagick版本信息,安装成功了。

在这里插入图片描述

三、ImageMagick使用

1.使用ImageMagick对单个图片png格式转为webp格式

magick test_01.png test_01_new.webp

可以看到同样画质的前提下,webp格式和png、jpg相比,文件格式小的多,除此之外,webp还支持动图。

在这里插入图片描述

2.通过shell编程,使用ImageMagick把图片png格式批量转为webp格式

for file_name in `ls *.png`;do magick $file_name `echo ${file_name//.png/_new.webp}`;done

在这里插入图片描述

3.通过shell编程,使用ImageMagick把图片png、jpg、jpeg、tiff格式批量转为webp格式

Shell脚本picToWebp.sh

#!/bin/bash
#功能:把常用的图片格式(png、jpg、jpeg、tiff)批量转换为webp格式for file_name in `ls *.png *.jpg *.jpeg *.tiff`;doif [ "png" == ${file_name##*.} ];thenmagick $file_name `echo ${file_name//.png/.webp}`fiif [ "jpg" == ${file_name##*.} ];thenmagick $file_name `echo ${file_name//.jpg/.webp}`fiif [ "jpeg" == ${file_name##*.} ];thenmagick $file_name `echo ${file_name//.jpeg/.webp}`fiif [ "tiff" == ${file_name##*.} ];thenmagick $file_name `echo ${file_name//.tiff/.webp}`fi
done

对上面代码进行优化后,如下:

Shell脚本picToWebp.sh

#!/bin/bash
#功能:把常用的图片格式(png、jpg、jpeg、tiff)批量转换为webp格式#for file_name in `ls *.png *.jpg *.jpeg *.tiff`;do
for file_name in `ls *.*`;doif [ "png" == ${file_name##*.} ];then(magick $file_name `echo ${file_name//.png/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "jpg" == ${file_name##*.} ];then    (magick $file_name `echo ${file_name//.jpg/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "jpeg" == ${file_name##*.} ];then(magick $file_name `echo ${file_name//.jpeg/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elif [ "tiff" == ${file_name##*.} ];then(magick $file_name `echo ${file_name//.tiff/.webp}`) && (echo "${file_name}已成功转为webp格式") || (echo "${file_name}转换失败")elseecho "仅支持常见的图片格式(png、jpg、jpeg、tiff)才可以转换为webp格式,其他文件${file_name}不支持!"fi
done

通过下面命令,修改picToWebp.sh可执行

chmod 755 picToWebp.sh

在这里插入图片描述

通过下面命令,执行picToWebp.sh

./picToWebp.sh

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/321663.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【源码分析】 Calcite 处理流程详解:calcite架构、处理流程以及就一个运行示例进行源码分析

文章目录 一. Calcite整体架构二. Calcite处理流程三. 处理流程样例说明1. 样例demo1.1. 样例数据1.2. 使用calcite 2. 流程源码分析Step1: SQL 解析阶段(SQL–>SqlNode)Step2: SqlNode 验证(SqlNode–>SqlNode)1. 注册元数…

未来已来,Ai原生应用与人高度结合!学习就在现在?

原生应用:OpenAI™ChatGPT、Baidu.Inc™文心一言 也可以体验CSDN的INSCODE AI,集成多个国内GPT内容。 文章目录 前言----编程语言的未来?一、编程语言的教育1.1 学校所见所闻1.2 开启我们的Ai行程~io!1.3 Ai结果评论 二、Ai编程教…

海外数据中心代理与住宅代理:优缺点全面对比

数据中心代理和住宅代理是为了匿名而开发的,通过替换网站眼中您自己的 IP 地址。然而,它们在价格、功能、性能或最佳用例方面存在一些差异。那么,这些代理类型到底有什么相似点和不同点呢? 一、什么是数据中心代理? 1…

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(2)

Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(2) 在 Android Matrix剪切clipPath缩放scale图片postTranslate圆形放大镜,Kotlin(1) Android Matrix剪切clipPath缩放scale图片po…

计算机组成原理-输入输出系统和IO控制方式

文章目录 总览现代计算机的结构常见的IO设备主机如何与IO设备交互IO控制方式简介程序查询方式程序中断方式DMA控制方式通道控制方式 IO系统基本组成小结 总览 现代计算机的结构 常见的IO设备 主机如何与IO设备交互 IO控制方式简介 数据寄存器:存放主机要输出到外设…

全功能Python测试框架:pytest

python通用测试框架大多数人用的是unittestHTMLTestRunner,这段时间看到了pytest文档,发现这个框架和丰富的plugins很好用,所以来学习下pytest. pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: …

接口测试基础知识总结

一、HTTP 1、http请求头和响应头包含那些内容? 请求头信息 请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。 2、常用的请求报头如下: Accept:浏览器可接受的MIME类型。 l MIME用于设定某种扩展名的文件用哪种应…

node.js安装web3.js

第一步 node.js和npm 首先你需要有node.js和npm 可参考菜鸟教程 第二步 初始化nodejs项目 在项目文件夹打开命令行,输入 npm init -y此代码意为创建一个nodejs项目,默认配置。 然后安装web3.js,命令行输入安装命令 npm install web3npm会…

ubuntu远程桌面连接之novnc

一、前言 该操作是为了实现vnc桌面连接为url连接方式,且在浏览器中可以对ubuntu进行操作。在使用novnc进行操作前,需要先安装vnc才可。ubuntu下如何安装vnc,可看博主前面写的一篇文,ubuntu远程桌面连接之vnc-CSDN博客,…

2024,清洁家电卷向“全、智、廉、拓”与“出海”

文 | 智能相对论 作者 | 佘凯文 岁末,又到了一年一度盘点全年、筹划未来的重要节点。在今年经济大环境整体趋向稳定的背景中,许多行业都交还算过得去的成绩单,清洁家电正是其中一员。 特别是在整体家电大环境依旧严峻的前提下,…

PTA——逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 输入格式: 每个测试是一个3位的正整数。 输出格式: 输出按位逆序…

【Java 进阶篇】Linux 常用命令使用详解:玩转命令行的魔法世界

在计算机的世界里,Linux是一个强大而富有魅力的操作系统。对于很多小白用户来说,刚接触Linux时可能感觉有些陌生,尤其是在命令行界面下。然而,正是这个看似晦涩的命令行,才是Linux系统最为强大和灵活的地方。本文将围绕…