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,一经查实,立即删除!

相关文章

基于MATLAB编程的BP神经网络土地分类,bp神经网络详细原理

目录 摘要 BP神经网络参数设置及各种函数选择 参数设置 训练函数 传递函数 学习函数 性能函数 显示函数 前向网络创建函数 BP神经网络训练窗口详解 训练窗口例样 训练窗口四部详解 基于MATLAB编程的BP神经网络土地分类 基于MATLAB编程的BP神经网络土地分类(代码完整,数据齐全…

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…

leetcode100169 求两个集合的交集

Problem: https://leetcode.cn/problems/maximum-squar100169 e-area-by-removing-fences-from-a-field/description/ [TOC] 思路 遍历所有的横向栏杆与纵向栏杆,算出横向栏杆之间的差和纵向栏杆之间的差并存储两个集合,最终的答案就是两个集合的交集的…

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

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

解决 GSYVideoPlayer 连续切换视频 出现黑屏只有声音没有画面的问题

问题描述 如果这个播放器用来recycleView中,实现类似抖音的效果,会发现刷了一段时间,会出现只有声音没有画面的情况。这个时候是因为surface没有创建(具体原因未知)。GSYTextureView中的onSurfaceTextureAvailable方法…

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/…

列表赋值,添加元素,删除元素,修改元素值

# append:附加,在列表中加入一个值 # remove(v):移除,在列表中删除原来的列表中存在的一个值 # 如果要删除原来的列表中不存在的一个值则会报错 ,例如: # ctrl / 可以多行注释 # 列表索引: p…

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

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

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

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

[原创][R语言]股票分析实战[7]:时间转换 与 股票涨幅计算

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…

Ef Core花里胡哨系列(1) SafeDelete、ReadOnly、Audit 安全删除、只读、审计等

Ef Core花里胡哨系列(1) SafeDelete、ReadOnly、Audit 安全删除、只读、审计等 在软件设计中,软删除是一种常见的数据管理技术,用于标记和隐藏被删除的数据,而不是永久地从数据库中删除它们。软删除通常通过在数据表中添加一个额外的标志列&…