更新答案 - 现在我自己更了解了 :-)
基本上,您可以像这样使用openssl 对图像进行base64 编码:
openssl enc -base64 -in image.png > image.b64
但是,如果您希望 ImageMagick 能够阅读它,则需要在开头添加一个小标题,以告诉 ImageMagick 后面的内容。标头必须包含:
data:image/png;base64,
后面是使用上述openssl 命令生成的base64 编码数据。因此,根据您的 shell 具有的功能,您可以使用 bash 中的复合语句来执行此操作:
{ echo "data:image/png;base64,"; openssl enc -base64 -in input.png; } > image.b64
或在 Windows 中这样:
echo data:image/png;base64, > image.b64
openssl enc -base64 -in image.png >> image.b64
获得该格式的图像后,您可以继续使用ImageMagick 处理它,如下所示:
convert inline:image.b64 result.png
在css中使用这个的,在一行输出中添加-A标志
openssl enc -base64 -A -in image.png > image.b64
原答案
经过多次试验,我可以做到!!! :-)
从 Eric (@emcconville) 的设置开始:
# For example
convert rose: rose.png
# Create base64 file
openssl enc -base64 -in rose.png -out rose.txt
现在将这个混乱添加到最后一行:
{ echo "data:image/png;base64,"; cat rose.txt; } | convert inline:- out.jpg
我猜data:image/png;base64, 不存在于openssl 创建的base64 文件中,所以我创建了一个复合语句,将其连同文件发送到ImageMagick 的stdin。