将图像从一种格式转换为另一种格式并发送到 STDOUT

Convert image from one format to another sent to STDOUT

我想将图像从 .jpg 转换为 .png。这很好用:

convert input.jpg output.png

但是,我试图让我的输出转到 STDOUT 而不是文件,手册上说要使用 "-"

我尝试使用:

convert input.jpg -.png

但它只是创建了一个名为 -.png 的文件。

是否可以将图像从一种格式转换为另一种格式并将其转到 STDOUT?

是的,只需使用这样的命令即可在 stdout 上将 JPEG 转换为 PNG:

magick input.jpg PNG:-

这些说明符适用于输入和输出。因此,如果您在 stdin 上有一个 TIFF 并希望在标准输出上有一个 32 位 RGBA PNG:

magick TIFF:- PNG32:-

您经常需要这些说明符来确保在未明确给出特定文件类型时,或者您想使用不同的扩展名。因此,假设您有一些 CCD 设备在名为 image.bin 的原始二进制文件中生成 RGB 数据,并且您希望 ImageMagick 读取它。您可以告诉 ImageMagick 格式 不必像这样更改文件名(到 image.rgb):

magick -size WxH RGB:image.bin result.png

记录了可能的格式 here


所有这些格式中的王者是 MIFF,它保证能够容纳您可能扔给它的任何东西,包括浮点值、透明度、掩码、串联流.. .因此,如果您需要在 ImageMagick 命令之间传递格式,MIFF 是一个不错的选择。一个例子,只是为了演示,因为它不是最佳的,可能是将来自 2 个单独的 ImageMagick 命令的两个图像连接到制作动画 GIF 的第三个命令中:

{ magick -size 100x60  xc:red miff:- ; magick -size 100x60 xc:blue miff:- ; } | magick -delay 80 miff:- result.gif