写在前面

最近有需求转换图片的格式, 例如

  1. .PDF转换为.png以便CSDN编辑器上传(如果直接使用截图会显得比较麻烦,多费一道手续),
  2. 或是将微信的一些图片制作成表情包(需要转换图片为.gif格式),

这些操作看似简单, 但是我一直没有找到一个方便快捷的操作.

对第一个要求, 一开始我在网上搜索[^6], 提到使用TeXLive\TeX\rm LiveTEXLive自带的gs命令进行PDF到图片格式的转换, 但是命令较为复杂, 如下

gs -sDEVICE=png16m -sOutputFile=newfig.png -dNOPAUSE -r1200 old.pdf quit.ps
gs -sDEVICE=png16m -sBATCH -sOutputFile=newfig.png -dNOPAUSE -r1200 old.pdf

经尝试这两个命令都可以进行PDF到图片的转换, 但是还是略显复杂了.

之后我在1评论中看到了有人用convert命令(实际上是ImageMagickmagick命令)和sips命令进行图片格式转换, 顿时让我觉得眼前一亮, 并且鉴于网上对于这个命令的介绍较少, 于是写此文进行总结.

convert命令(magick)

convert命令其实是imagemagick程序包的一个命令, 通过ls -al可以方便的看到软链接

❯ ls -l /opt/homebrew/Cellar/imagemagick/7.1.0-19/bin/convert
lrwxr-xr-x  1 hep  staff  6 12 23 05:05 /opt/homebrew/Cellar/imagemagick/7.1.0-19/bin/convert -> magick
  • 官网给出的教程也说convert其实等价于magick的.

这个软件包是安装MacTeX时候的附带产品, 如果大家没安装的话可以使用brew install imagemagick直接安装, 开源强大的图片处理转换命令行工具. 其功能不亚于下面提到的sips, 有兴趣的话大家可以到其官方主页2进行深入学习了解.

执行转换命令只需要传入待转换的图片以及输出的图片文件名即可, 还是很方便的

convert aa.eps a.ico

简直不要再方便, 而且支持几乎所有的位图/矢量图格式. 美中不足的一点就是转换的图片质量不高,

sips(scriptable image processing system)

使用macOS独有的脚本化图片处理系统sips命令, 就可以方便快捷进行图片的格式转换, 而且还支持图片的裁剪旋转等各种常用操作, 只需要熟悉基本的bash命令就可以实现, 还是很值得学习的. 所以这里也着重介绍一下sips命令.

官方文档

首先来看其官方文档(使用sips --help命令也可以查看)

❯ sips --help
sips - scriptable image processing system.
This tool is used to query or modify raster image files and ColorSync ICC profiles.
Its functionality can also be used through the "Image Events" AppleScript suite.Usages:sips [image-functions] imagefile ...sips [profile-functions] profile ...Profile query functions:-g, --getProperty key-X, --extractTag tag tagFile--verify-1, --oneLineImage query functions:-g, --getProperty key-x, --extractProfile profile-1, --oneLineProfile modification functions:-s, --setProperty key value-d, --deleteProperty key--deleteTag tag--copyTag srcTag dstTag--loadTag tag tagFile--repair-o, --out file-or-directoryImage modification functions:-s, --setProperty key value-d, --deleteProperty key-e, --embedProfile profile-E, --embedProfileIfNone profile-m, --matchTo profile-M, --matchToWithIntent profile intent--deleteColorManagementProperties-r, --rotate degreesCW-f, --flip horizontal|vertical-c, --cropToHeightWidth pixelsH pixelsW--cropOffset offsetY offsetH-p, --padToHeightWidth pixelsH pixelsW--padColor hexcolor-z, --resampleHeightWidth pixelsH pixelsW--resampleWidth pixelsW--resampleHeight pixelsH-Z, --resampleHeightWidthMax pixelsWH-i, --addIcon--optimizeColorForSharing-o, --out file-or-directory-j, --js fileOther functions:--debug           Enable debugging output-h, --help            Show help-H, --helpProperties  Show help for properties--man             Generate man pages-v, --version         Show the version--formats         Show the read/write formats

由于上面的一些命令参数需要制定具体的图片属性, 下面列出了官方文档中的所有键值参数(sips --helpProperties)

❯ sips --helpProperties
sips - scriptable image processing system.
This tool is used to query or modify raster image files and ColorSync ICC profiles.
Its functionality can also be used through the "Image Events" AppleScript suite.The commands --getProperty, --setProperty, and --deletePropertycan use one of the following keys as a parameter.Special property keys:all                  binary dataallxml               binary dataImage property keys:dpiHeight            floatdpiWidth             floatpixelHeight          integer (read-only)pixelWidth           integer (read-only)typeIdentifier       string (read-only)format               string jpeg | tiff | png | gif | jp2 | pict | bmp | qtif | psd | sgi | tgaformatOptions        string default | [low|normal|high|best|<percent>] | [lzw|packbits]space                string (read-only)samplesPerPixel      integer (read-only)bitsPerSample        integer (read-only)creation             string (read-only)make                 stringmodel                stringsoftware             string (read-only)description          stringcopyright            stringartist               stringprofile              binary datahasAlpha             boolean (read-only)Profile property keys:description          utf8 stringsize                 integer (read-only)cmm                  stringversion              stringclass                string (read-only)space                string (read-only)pcs                  string (read-only)creation             stringplatform             stringquality              string normal | draft | bestdeviceManufacturer   stringdeviceModel          integerdeviceAttributes0    integerdeviceAttributes1    integerrenderingIntent      string perceptual | relative | saturation | absolutecreator              stringcopyright            stringmd5                  string (read-only)

这里列出可以进行转换的格式sips --formats

❯ sips --formats
Supported Formats:
-------------------------------------------
com.adobe.pdf                pdf   Writable
com.adobe.photoshop-image    psd   Writable
com.adobe.raw-image          dng
com.apple.atx                --    Writable
com.apple.icns               icns  Writable
com.apple.pict               pict
com.canon.cr2-raw-image      cr2
com.canon.cr3-raw-image      cr3
com.canon.crw-raw-image      crw
com.canon.tif-raw-image      --
com.compuserve.gif           gif   Writable
com.dxo.raw-image            dxo
com.epson.raw-image          erf
com.fuji.raw-image           raf
com.hasselblad.3fr-raw-image 3fr
com.hasselblad.fff-raw-image fff
com.ilm.openexr-image        exr   Writable
com.kodak.raw-image          dcr
com.konicaminolta.raw-image  mrw
com.leafamerica.raw-image    mos
com.leica.raw-image          raw
com.leica.rwl-raw-image      rwl
com.microsoft.bmp            bmp   Writable
com.microsoft.cur            --
com.microsoft.dds            dds   Writable
com.microsoft.ico            ico   Writable
com.nikon.nrw-raw-image      nrw
com.nikon.raw-image          nef
com.olympus.or-raw-image     orf
com.olympus.raw-image        orf
com.olympus.sr-raw-image     orf
com.panasonic.raw-image      raw
com.panasonic.rw2-raw-image  rw2
com.pentax.raw-image         pef
com.phaseone.raw-image       iiq
com.samsung.raw-image        srw
com.sgi.sgi-image            sgi
com.sony.arw-raw-image       arw
com.sony.raw-image           srf
com.sony.sr2-raw-image       sr2
com.truevision.tga-image     tga   Writable
org.khronos.astc             astc  Writable
org.khronos.ktx              ktx   Writable
org.webmproject.webp         webp
public.avci                  avci
public.heic                  heic  Writable
public.heics                 heics Writable
public.heif                  heif
public.jpeg                  jpeg  Writable
public.jpeg-2000             jp2   Writable
public.mpo-image             mpo
public.pbm                   pbm   Writable
public.png                   png   Writable
public.pvr                   pvr   Writable
public.radiance              pic
public.tiff                  tiff  Writable

主要使用场景

转换图片格式

这里列出几个使用sips命令的具体例子

  1. pdf->png

    sips -s format png old.pdf -o new.png
    
  2. pdf->jpg

    sips -s format jpeg old.pdf -o new.jpg
    
  3. jpg->gif

    sips -s format gif old.jpg -o new.gif
    

其他常见格式如tiff, bmp, psd等也可以进行相互转换, 命令格式如上. 但是,美中不足的是ico格式(图标)不能通过sips实现, 只能通过imagemagick来操作.

修改图片为指定像素

  1. 修改图片为20000像素宽, 高度为自适应.

    sips -Z 20000 a.jpg
    
  2. 修改图片为200*200像素

    sips -z 200 200 a.jpg
    

旋转/翻转图片

  1. 顺时针旋转图片180°

    sips -r 180 a.jpg
    
  2. 水平/垂直翻转图片

    sips -f horizontal  a.jpg
    sips -f vertical  a.jpg
    

几个命令的对比

这里我亲自尝试了各个命令, 并进行简单的对比, 如下表所示, 事实证明, sips在图片的各项操作中都以其简洁的语法和高效的操作优于其他命令, 但是对于一些需要深度定制图片属性的场景, 还是要辅助于gs,imagemagick等命令行工具, 或者直接利用可视化的gimp, Photoshop进行处理.

命令 命令简介 主要使用场景 转换PDF与输出质量 命令复杂程度
gs ghostscript命令 专门用于处理.ps文件以及PDF相关的文件 直接转换, 质量高
magick(convert) imagemagick工具的命令,需要额外下载安装 图片处理 质量低,pdf转png会丢失背景
sips MacOS自带的图片处理命令, 功能强大 图片处理, 不能处理ico文件 质量高,pdf转png会丢失背景

综上, 我还是推荐使用sips的, 需要一些额外功能的话可以借助其他命令.

主要参考


  1. Command(s) which would render a LaTeX document into a PNG on Mac - TeX - LaTeX Stack Exchange; ↩︎

  2. ImageMagick – Command-line Tools: Magick; ↩︎

使用macOS自带convert,sips命令快速处理图片及转换图片格式相关推荐

  1. 快速的批量转换图片,修改大小——XnShell

    想要快速的批量转换图片格式或者更改它们的大小,就不必使用一些重量级的工具了,一个名为XnShell右键菜单扩展就可以帮你完成. XnShell安装后会集成在右键菜单中,只要右键点击图像文件,它就会出现 ...

  2. mac上使用sips命令快速裁剪、旋转、翻转图片

    mac上使用sips命令快速裁剪.旋转.翻转图片 日常开发工作中,经常碰到要对图片进行一些简单的处理,不需要动用PS,在mac上就有一个很好的命令行工具:sips 这里我们不具体展开讲,仅贴出几个常用 ...

  3. Linux使用ImageMagick下的convert命令转换图片格式

    1.convert说明 convert命令可以用来转换图像的格式,支持bmp,jpg,png,gif,tiff等图像格式, 在有些Linux系统中,已经安装了convert工具,可以使用convert ...

  4. 如何快速批量转换图片格式?

    工作场所总是有各种各样的操作. 我们需要处理office文档格式之间的转换,有时还需要处理图像格式之间的转换. 因为不同格式的图片需要在不同的场景中使用,而且有限制,比如有些网站只支持png和jpg格 ...

  5. bmp转换tiff c++代码_如何快速转换图片格式

    Pixillion是Mac上的一款简单实用的图片格式转换工具.可以在gif, jpg, png, pdf等格式间相互转换,快速转换图像文件为你想要的格式并上传到网站,减小文件体积(如用于发送电子邮件) ...

  6. CAD图纸怎么快速转换图片格式?

    我们会遇到各 种CAD图纸转换的问题.其中就有CAD转换成图片格式,怎么才能快速转换呢?在这里和大家一起讨论一下,CAD图纸转换成图片格式的方法.演示操作如下: CAD转换器 http://www.x ...

  7. 如何在线快速修改图片、转换图片格式?

    在线快速修改图片,图片裁剪.图片压缩.增加水印.去除水印一站式服务.修图上老馒头修图网就好了.只要上传图片,选择下格式.拖动下压缩量即可完成,非常方便,零基础操作.修改内容实时呈现,所见即所得![老馒 ...

  8. python快速批量将jpg图片格式转为pgm格式

    python快速批量将jpg或者png图片格式转为pgm格式. 代码里两个部分要改成你自己的路径,已经在代码备注. import os import cv2path = r'D:\DeepLearni ...

  9. 如何转换图片格式?教你一键快速转格式的方法

    图片的格式有很多种其中jpg格式是我们最常见的图片格式之一,那么我们应该怎样将不是jpg格式的图片变成最常用的jpg格式图片呢?接下来我为大家介绍一款图片格式在线转换器(https://www.yas ...

最新文章

  1. 8)排序②排序算法之选择排序[1]直接选择排序
  2. php5.3 php7兼容,Centos搭建PHP7.0.x让php5.3和php7兼容共存教程
  3. 对map集合进行排序
  4. windows主机网络信息获取程序设计
  5. 【教女朋友学网络系列3】之手把手教她明白交换机的基本原理
  6. 无法想mysql进行插入_mysql 无法插入中文
  7. Android的.apk软件安装到sd卡的方法
  8. 如何解决大量的if语句或switch case语句?
  9. 基于jQuery UI CSS Framework开发Widget
  10. nodejs koa2 mysql_springboot动态加载sigar - SegmentFault 思否
  11. C#编程--ribbon界面介绍
  12. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》成功的要素与视听语言
  13. 桃子CCD视觉高速喷射点胶机,用它你就会爱上它
  14. cf1111d(退背包)
  15. 《正确写作美国大学生数学竞赛论文》摘录笔记
  16. 浪潮服务器维修报价,浪潮服务器报价网
  17. Plonky msm的改进版Yao算法
  18. ​STM32家族介绍,覆盖STM32F、STM32H、STM32L全系列
  19. 全国所有城市及站点空气质量数据集(2014-2020年)
  20. 常微分方程——非齐次线性微分方程与常数变易法

热门文章

  1. 遇见好链接(我还并没有看)
  2. 如何踩中下一个技术节拍
  3. 4 linux编辑器
  4. linux 常用基础命令
  5. fedora27安装谷歌浏览器Chrome
  6. IOS提交审核 错误Missing Push Notification Entitlement
  7. 字体乱码的时候,可以使用英文下的写法
  8. 【机器学习】ICA 原理以及相关概率论,信息论知识简介
  9. Gradle[1]gradle distZip时,增加目录信息到zip中
  10. 利用MyEclipse的ant插件生成Hibernate的映射文件