GraphicsMagick实现云服务商基础图片处理
背景: 搭建图片处理服务的主要目的是为自研云存储提供图片处理能力,参考目前使用的云服务商阿里云、七牛云,搭建图片在线处理服务。本文手把手教会你使用GraphicsMagick工具实现云服务商提供的基础图片处理功能需求。
⚠️ 注意事项
如果之前本地还没有安装GraphicsMagick
的话,建议现在立刻马上安装一下,然后跟着本文一起玩转图片处理功能!
图片处理专栏
1、手把手教你本地安装GraphicsMagick
2、Springboot集成GraphicsMagick
常用功能&命令整理
图片缩放
gm convert ${sourceImgPath} -resize ${width}x${height}${mode} ${distImgPath}
描述
通过图片缩放参数,调整图片大小。
参数解析
参数 | 定义 |
---|---|
sourceImgPath | 源图片路径 |
width | 指定目标缩放图的宽度 |
height | 指定目标缩放图的高度 |
mode |
’ ’ [lfit](默认值):等比缩放,缩放图限制为指定w和h的矩阵内最大图片 ’^’ [mfit]:等比缩放,缩放图为延伸出指定w与h的矩形框外的最小图片 ’!’ [fixed]:固定宽高,强制缩放 ’%’ [percent]:百分比缩放,将宽度和高度声明视为百分比值,而不是像素长度 |
distImgPath | 目标图片路径 |
示例
example参考: https://help.aliyun.com/document_detail/44688.htm?spm=a2c4g.11186623.2.9.742df2eejHaW9d#concept-hxj-c4n-vdb
原图外网访问地址:https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg
等比缩放
按宽高缩放
- 图片缩放为宽高100px
- 缩放模式为lfit
图片处理命令:gm convert example.jpg -resize 100x100 test.jpg
- 图片缩放为宽高100px
- 缩放模式为mfit
图片处理命令:gm convert example.jpg -resize 100x100^ test.jpg
固定宽高缩放
- 将原图缩放为宽高100px
- 缩放模式为fixed
图片处理命令:gm convert example.jpg -resize 100x100! test.jpg
按比例缩放
- 将原图缩放50%
图片处理命令:gm convert example.jpg -resize 50% test.jpg
- 将原图缩放50%
自适应方向
gm convert ${sourceImgPath} -auto-orient ${distImgPath}
描述
通过自适应方向参数指定原图是否按自适应方向旋转
备注: EXIF(Exchangeable Image File)是 “可交换图像文件” 的缩写,当中包含了专门为数码相机的照片而定制的元数据,可以记录数码照片的拍摄参数、缩略图及其他属性信息,简单来说,Exif 信息是镶嵌在 JPEG/TIFF 图像文件格式内的一组拍摄参数,需要注意的是 EXIF 信息是不支持 png,webp 等图片格式的。
参数解析
参数 | 定义 |
---|---|
sourceImgPath | 源图片路径 |
distImgPath | 目标图片路径 |
示例
example参考: https://developer.qiniu.com/dora/kb/1560/information-about-photo-exif-rotation-parameters-in-the-understanding-of-orientation
原图外网访问地址:https://cvte-dev-public.seewo.com/shan-test/4354acf302f44722b905d289847c4d58
- 自适应旋转
图片处理命令:gm convert example.png -auto-orient test.png
质量变换
gm convert ${sourceImgPath} -quality ${q} ${distImgPath}
描述
使用原图本身的格式对图片进行压缩,通过质量变换参数,修改原图的质量。
参数解析
参数 | 定义 |
---|---|
sourceImgPath | 源图片路径 |
q | 压缩比例,压缩后体积并不会严格按照比例缩小,取值为 [1, 100] |
distImgPath | 目标图片路径 |
example
gm convert example.png -quality 50 test.png
格式转换
gm convert ${sourceImgPath} ${distImgPath}.${format}
参数解析
直接设置图片后缀即可。
参数 | 定义 |
---|---|
sourceImgPath | 源图片路径 |
distImgPath | 目标图片路径 |
format | 图片后缀,如:jpg/jpeg/png/webp/bmp/gif/tiff |
example
gm convert example.png test.jpg
自定义裁剪
gm convert ${sourceImgPath} -crop ${width}x${height}+${x}+${y} ${distImgPath}
描述
通过自定义裁剪参数,在原图上裁剪指定大小的矩形图片。
参数解析
参数 | 定义 |
---|---|
sourceImgPath | 源图片路径 |
width | 指定裁剪宽度,[0, 图片宽度],默认为最大值 |
height | 指定裁剪高度,[0, 图片高度],默认为最大值 |
x | 指定裁剪起点横坐标(默认左上角为原点),[0, 图片边界] |
y | 指定裁剪起点纵坐标(默认左上角为原点),[0, 图片边界] |
distImgPath | 目标图片路径 |
示例
example参考: https://help.aliyun.com/document_detail/44693.html?spm=a2c4g.11186623.6.738.7df8390a36Vp9k
原图外网访问地址:https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg
从(100,50)开始,裁剪至图片边界
- 裁剪起点为(100, 50)
- 裁剪至图片边界:裁剪时默认使用w和h的最大值,所以可以忽略
图片处理命令:gm convert example.jpg -crop +100+50 test.jpg
从(100, 50)开始,裁剪 100px * 100px 大小的图片
- 裁剪起点为(100, 50)
- 裁剪范围 100px * 100px
图片处理命令:gm convert example.jpg -crop 100x100+100+50 test.jpg
获取图片信息
gm identify -format '[output] %w %h %m %b\n' ${sourceImgPath}
描述
获取图片相关信息(宽高、格式、大小)。
参数解析
参数 | 定义 |
---|---|
-format |
%w:宽度 %h:高度 %m:图片格式 %b:图片大小 |
sourceImgPath | 源图片路径 |
example
图片处理命令:gm identify -format '[output] %w %h %m %b\n' example.jpg
输出:[output] 400 267 JPEG 21.3Ki
参考
1、阿里云图片处理指南:https://help.aliyun.com/document_detail/183902.html?spm=a2c4g.11186623.6.746.59677fd8jdjVGq
2、七牛云图片处理指南:https://developer.qiniu.com/dora/3683/img-directions-for-use
3、GM官方文档:http://www.graphicsmagick.org/utilities.html
4、ImageMagick命令:https://www.thisfaner.com/p/imagemagick/
GraphicsMagick实现云服务商基础图片处理相关推荐
- 政府安全资讯精选 2017年第十八期 工信部近三年将466个“问题APP”纳入黑名单;阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商...
摘要: 工信部近三年将466个"问题APP"纳入黑名单:阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商:新加坡政府首开漏洞奖励计划,邀"白帽子"渗 ...
- 阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商 数据安全获“最严谨”标准认可...
12月14日,德国联邦信息安全局宣布阿里云完成德国C5云安全(Cloud Computing Compliance Controls Catalog)标准评审. 这样,阿里云成为全球首家,也是唯一一家 ...
- 观点PK_倘若做不好AI,云服务商还能勇往直前吗?
AI强大却不独立存在,如今已经成为人们普遍接受的理念之一. 在这个火热的时代,AI技术不是一个独立的产品,而是一种"基本生产力",它适用于大部分经济活动,可以让各行各业都产生&qu ...
- 网宿科技:向云服务商转型
公司产业 网宿的托管云服务,在很大程度上解决了企业IT基础设施硬件高投入重运维的成本痛点,在企业信息化更新换代的时代潮流之下,有可能会杀出一条市场之路来. 近段时间,A股市场的网红概念.视频直播概念轮 ...
- 云服务商正在杀死开源商业模式
对程序员圈子来说,Mapbox是一家专注于地图绘制的卓越软件公司.从Mapbox GL JS(他们的2D地图渲染器)到自动驾驶和导航库,再到增强现实.3D可视化,甚至视频游戏技术,Mapbox在这一领 ...
- 云原生基础架构的最佳状态,就是没有架构?
云栖号资讯:[点击查看更多行业资讯] 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 云原生基础架构是通向云原生时代的基石,对于很多架构师来说,上云之后,架构为什么成为了云原生架构而不 ...
- 云服务,云服务商比较
云服务 打开百度,搜索"云服务器"一词,主要出现华为云.阿里云.腾讯云.AWS云等,双十一期间各个云服务商都施行了大幅的促销优惠,优惠力度之大,让我汗颜,因为我正在心疼我已经多花出 ...
- 阿里巴巴2022届应届生招聘 阿里云存储基础技术 研发测试算法
学弟学妹们好,我们是阿里云存储基础技术团队,正在进行2022届校招. 团队业务核心,团队氛围nice,对于每位实习同学都会配师兄专职辅导. 本次招聘为部门直招,简历直接推给Leader,反应更快速,合 ...
- 【学习总结】Apsara Clouder云计算技能认证:云服务器基础运维与管理+思维导图
[学习总结]Apsara Clouder云计算技能认证:云服务器基础运维与管理 课程目标 3个理由拥抱云服务器 什么是云服务器? 使用云服务器的好处? 理由一:简单易用 理由二:高效稳定 理由三:成本 ...
最新文章
- 安装bigsur卡在12分钟_Big Sur为什么安装不了?macOS Big Sur无法完成安装的解决办法!...
- svg path属性
- LeetCode 98验证二叉搜素树(中序遍历)99恢复二叉搜索树
- 怎么证明会python_如何在python中验证SSL证书?
- 手机浏览器推荐_推荐一款手机上最好用的浏览器
- SSM 整合 4:Spring IoC 容器基于的两个重要接口 BeanFactory 和 ApplicationContext
- 高手过招:用SQL解决环环相扣的刑侦推理问题(罗海雄版本)
- HTML精仿ios相册,iOS开发-仿微信相册选择Demo
- 用于编写configure.in的Config语言简介
- atlas 力矩计算_Atlas 2.1.0 实践(2)—— 安装Atlas
- 数据中心降低运营成本战略解密
- cocos2d- AtlasSprite AtlasSpriteManager
- vasp软件全名是什么_qvasp一款简单易用的VASP辅助计算软件
- 刷题笔记(一)《王道计算机考研机试指南2》
- 问卷与量表数据分析(SPSS+AMOS)学习笔记(十四) :量表初测阶段的信度分析,删除题项
- 基于前程无忧平台数据分析师岗位的薪资水平分析(一)
- 2021年上半年软考真题及答案解析汇总
- alios things开发板_AliOS Things图形界面开发指南
- 电商网站的价格大概多少钱?
- Nginx下同域部署多个Vue项目(history路由模式),报404、500错误
热门文章
- 刷屏器!简单!快速!稳定!可控制速度!
- 一文熟悉 Go 的循环结构 —— for 循环
- 小明左、右手中分别拿两张纸牌(比如:黑桃10和红桃8,数字10和8可通过键盘录入),要求编写代码交换小明手中的牌
- 想象力无限,人工智能时代你对AGV有什么期许
- 计算机管理员解除阻止程序方法,电脑安装软件时弹出系统管理员设置了系统策略,禁止进行此安装解决方法...
- 历年评书出版一览表(1955~1994)
- 将Twitter4j与Scala结合使用以执行用户操作
- 射频和无线技术入门--传统技术--7
- catia怎样倒2d_CATIA的3D图怎么完美转换成CAD的2D工程图
- 锐捷文件描述错误linux,Kubuntu 14.10 MentoHUST 配置libpcap 锐捷校园网登录总结