imagemagick - 为什么imagemagick-convert只有jpeg作为委托时能够将jpg转换为png
问题描述
当我执行命令 convert -version 时,它会给出以下输出。
Version: ImageMagick 6.8.9-7 Q16 x86_64 2019-08-23 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC OpenMP
Delegates: jpeg
如上所述,代表仅支持 jpeg,这意味着只能读取和写入 jpeg。为什么我能够转换为png?
convert /tmp/val.jpg /tmp/val.png
工作得很好。为什么?
为什么这些格式被称为委托而不是“支持的格式”?
https://imagemagick.org/script/convert.php https://www.imagemagick.org/discourse-server/viewtopic.php?t=28781
说只能转换代表中的格式。
convert - version
解决方案
并非所有 ImageMagick 代表都是图像格式。有些支持文本(fontconfig、freetype)或颜色(lcms)。它们被称为委托,因为它们是 ImageMagick 用来处理某些图像格式或帮助完成其他任务的外部程序。
您的输出可能仍然是 JPG,但具有 png 后缀。你可以从
convert image -format "%m" info:
or
identify -verbose image
你会看到实际的格式。
例如,在这里我将 JPG 转换为虚构的 ABC 格式。
convert logo.jpg logo.abc
convert logo.abc -format "%m" info:
JPEG
所以实际的格式是JPEG。
Imagemagick 可以在没有委托的情况下写入某些格式(例如 PDF),但需要委托(Ghostscript)才能读取它。但是,我不认为 PNG 是其中一种格式。
您将需要重新安装或安装更多代表。我建议从二进制文件安装。
请参阅此处列出的适用于各种平台的 Imagemagick 二进制文件
你还没有说你在哪个平台上,但是 Linux 发行版附带安装了代表的 ImageMagick。
推荐阅读
- microsoft-graph-api - 无法创建具有更多注册应用程序权限的承载
- python - Pandas 基于另一列的条件行值
- scala - Spark2.4无法从同一个表覆盖表
- html - 在同一个表单中使用两个提交按钮是否有任何潜在问题?
- c# - 使用 Azure Active Directory 登录时,如何在 Azure Web App 的 C# 代码中获取我的用户名?
- python - 将张量调整为张量流中的特定形状
- tensorflow - 谷歌 colab 训练完 yolov3-tiny 后立即停止
- c# - 使用三元运算符 c# 分配动作
- python - Pandas 中的数据转换
- matlab - 从向量中的数字中查找前导零的数量