ski*_*ppy 10 imagemagick imagemagick-convert
我正在尝试使用ImageMagick中的"convert"命令行工具.我有一个base64编码的png文件,我需要将其转换为另一种格式.我正在查看文档和论坛讨论,这表明我应该能够使用这种语法:
convert inline:file.txt file.jpg
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到此错误消息:
convert: corrupt image `file.txt' @ error/constitute.c/ReadInlineImage/910.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何转换为读取base64图像文件?
Mar*_*ell 11
更新的答案 - 现在我自己更了解它:-)
基本上,您可以使用base64编码图像 openssl以下方式:
openssl enc -base64 -in image.png > image.b64
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要ImageMagick能够阅读它,你需要在开始时使用一个小标题来告诉你ImageMagick后面的内容.标头必须包含:
data:image/png;base64,
Run Code Online (Sandbox Code Playgroud)
然后使用openssl上面的命令生成base64编码数据.因此,根据shell的功能,您可以使用复合语句来执行此操作bash:
{ echo "data:image/png;base64,"; openssl enc -base64 -in input.png; } > image.b64
Run Code Online (Sandbox Code Playgroud)
或者在Windows中这样:
echo data:image/png;base64, > image.b64
openssl enc -base64 -in image.png >> image.b64
Run Code Online (Sandbox Code Playgroud)
一旦您获得该格式的图像,您就可以继续处理它,ImageMagick如下所示:
convert inline:image.b64 result.png
Run Code Online (Sandbox Code Playgroud)
对于那些在css中使用它的人,-A在一行中将output 添加到输出
openssl enc -base64 -A -in image.png > image.b64
Run Code Online (Sandbox Code Playgroud)
原始答案
经过多次试验,我可以做到!:-)
从Eric(@emcconville)设置开始:
# For example
convert rose: rose.png
# Create base64 file
openssl enc -base64 -in rose.png -out rose.txt
Run Code Online (Sandbox Code Playgroud)
现在将这个混乱添加为最后一行:
{ echo "data:image/png;base64,"; cat rose.txt; } | convert inline:- out.jpg
Run Code Online (Sandbox Code Playgroud)
我想data:image/png;base64,不存在通过创建以base64文件openssl,所以我创建一个发送该加的文件,以一个复合语句stdin的ImageMagick.
| 归档时间: |
|
| 查看次数: |
5410 次 |
| 最近记录: |