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.mzph.cn/news/591214.shtml

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

相关文章

Bert模型from_pretrained报网络错误解决办法

问题描述: 服务器或者本地运行以下代码时报网络连接错误: from transformers import AutoTokenizermodel_checkpoint "distilbert-base-uncased" tokenizer AutoTokenizer.from_pretrained(model_checkpoint, use_fastTrue, cache_dir./cac…

python解决一维动态规划问题,寻找丑数

对于一维动态规划问题中,还有一个可能会经常遇到的问题,就是寻找丑数。 对于丑数的概念是,把只包含质因子2、3和5的数称作丑数(Ugly Number)。 添加图片注释,不超过 140 字(可选) 添…

Vue-响应式数据

一、ref创建基本类型的响应式数据 vue3可以使用ref、reactive去定义响应式数数据。 知识点汇总 使用ref需要先引入ref,import {ref} from vue在模板 template 中使用了添加ref 的响应式数据,变量的后面不用添加.value所有js代码里面,去操作r…

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端(flask)前端(vue3)重要说明 演示 后端(flask) 后端返回的是 mp3 文件的 url,是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…

Python - 数据结构与算法之 排列与组合

目录 一.引言 二.排列 A-Permute ◆ 定义 ◆ 计算 ◆ 性质 ◆ 实现 三.组合 C-Combine ◆ 定义 ◆ 计算 ◆ 性质 ◆ 实现 四.经典算法题目 1.全排列 [无重复] 2.全排列 [有重复] 3.组合 [可重复] 4.子集 [无重复] 5.子集 [有重复] 五.总结 一.引言 关于排列…

云原生十二问

一、什么是云原生? 云原生是在云计算环境中构建、部署和管理现代应用程序的软件方法。现代企业希望构建高度可扩展、灵活且具有弹性的应用程序,可以快速更新以满足客户需求。为此,他们使用现代工具和技术,这些工具和技术本质上支…

科普帖:什么是XaaS-一切皆服务模型(包含10个示例类别)

有时似乎有太多的商业首字母缩写词要记住。随着快速变化的技术进步和云计算的出现,新的类别将不断涌现。XaaS 就是这样一个最新的补充。 该领域的大多数读者都知道SaaS(软件即服务)、IaaS(基础设施即服务)和PaaS&…

【CISSP学习笔记】5. 安全架构和工程

该知识领域涉及如下考点,具体内容分布于如下各个子章节: 使用安全设计原理来研究、实施与管理工程过程理解安全模型的基本概念(例如 Biba、Star Model、Bell-LaPadula 等模型)基于系统安全要求选择控制措施理解信息系统 (IS) 的安…

强大的隐藏应用 Hides 5中文 for mac

Hides 5是一款Mac上的应用程序,旨在帮助用户隐藏其他应用程序并专注于当前任务,从而提高工作效率。其主要功能包括对焦模式、隐藏所有打开的应用程序、隐藏除当前活动应用之外的所有打开的应用程序、支持全局热键、可定制性、支持多种显示方式等。 Hide…

【map】【滑动窗口】【优先队列】LeetCode480滑动窗口中位数

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本文涉及的基础知识点 C算法:滑动窗口总结 map 优先队列 题目 中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两…

注意力机制(attention mechanism)

1、注意力 灵长类动物的视觉系统接收了大量的感官输入,这些感官输入远远超出了大脑能够完全处理的能力。然而,并非所有刺激的影响都是同等的。意识的汇聚和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感兴趣的物体,例如猎物和天敌。…

【XR806开发板试用】FreeRTOS创建任务测试

这篇来学习下,XR806开发板在FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。 一、复制工程 上篇测试了hello_demo的测试例程,直接复制这个工程文件,在此基础上修改 rootubuntu:/home/…

HarmonyOS官网案例解析——保存应用数据

介绍 本篇Codelab将介绍如何使用基础组件Slider,通过拖动滑块调节应用内字体大小。要求完成以下功能: 实现两个页面的UX:主页面和字体大小调节页面。拖动滑块改变字体大小系数,列表页和调节页面字体大小同步变化。往右拖动滑块字体…

Linux安装consul的两种方式(在线和离线)

目录 📚第一章 前言📗背景📗软件概述 📚第二章 部署📗在线部署📕需要root权限📕执行安装命令📕启动consul服务📕验证consul服务 📗离线部署📕下载…

(九)上市企业实施IPD成功案例分享之——欧普

LED通用照明应用是LED照明应用市场的第一驱动力,由于LED照明技术发展迅速,以及成本快速下降,已成为全球主流照明光源。近年来,通过将智能控制模块嵌入LED通用照明终端,形成了具有自动控制、系统化控制等功能的智能照明…

听GPT 讲Rust源代码--library/panic_unwind

File: rust/library/panic_unwind/src/seh.rs 在Rust源代码中,rust/library/panic_unwind/src/seh.rs这个文件的作用是实现Windows操作系统上的SEH(Structured Exception Handling)异常处理机制。 SEH是Windows上的一种异常处理机制&#xff…

EDI 项目推进流程

EDI 需求确认 交易伙伴发来EDI对接邀请,企业应该如何应对? 首先需要确认EDI需求,通常包括传输协议和报文标准以及传输的业务单据类型。可以向交易伙伴发送以下内容: (中文版) 与贵司建立EDI连接需要使用…

【没有哪个港口是永远的停留~论文解读】stable diffusion

了解整个流程: 【第一部分】输入图像 x (W*H*3的RGB图像)【第一部分】x 经过编码器 生成 (latent 空间的表示) h*w*c (具体设置多少有实验)【第二部分】 逐步加噪得到 ,和噪声标签【第二部分】由 Unet( &#xff…

Kubernetes(k8s):Namespace详解

Kubernetes(k8s):Namespace详解 一、Namespace简介1.1 什么是Namespace1.2 Namespace的作用1.3 命名空间的分类 二、创建和管理Namespace2.1 创建Namespace2.2 管理Namespace 三、Namespace的实战应用3.1 部署多个项目3.2 环境隔离3.3 资源配…

从零开始配置kali2023环境:配置jupyter的多内核环境

在kali2023上面尝试用anaconda3,anaconda2安装实现配置jupyter的多内核环境时出现各种问题,现在可以通过镜像方式解决 1. 搜索镜像 ┌──(holyeyes㉿kali2023)-[~] └─$ sudo docker search anaconda ┌──(holyeyes㉿kali2023)-[~] └─$ sudo …