基本上我正在尝试编写一行聪明的命令,将base64编码的字符串输出到原来是图像路径的位置。所以:
非常适合临时替换图像为其base64表示,但我想自动替换文件中所有出现的
我一直在尝试使用
background-image: url(path/to/my/image.png);
…将转变为:
background-image: url(data:image/png;base64,ABvR0…+tC==);
通常我通过以下方式将图像转换为其Base64编码字符串:
openssl enc -base64 -in path/to/my/image.png
这会输出带有换行符的base64编码。可以通过使用tr
来修复此问题,例如:
openssl enc -base64 -in path/to/my/image.png | tr -d '\n'
这段代码仅输出一个长的Base64编码字符串。通过使用Mac OS上的pbcopy,将其发送到剪贴板中,如下所示:
openssl enc -base64 -in path/to/my/image.png | tr -d '\n' | pbcopy
非常适合临时替换图像为其base64表示,但我想自动替换文件中所有出现的
url(path/to/whatever.ext)
为它们各自的base64字符串。确保其中只有实际路径而没有data-uri超出了本文的范围:)我一直在尝试使用
sed
替换内容,但我卡在了可怕的文档上。在CSS文件中找到url(…)
模式的出现并不太困难,但是括号之间的部分需要替换为上述命令的输出,如果这可能的话,我就无从下手了。所以,这就是问题所在,希望能得到帮助或一些指导(我是否还需要研究awk?)。当然,如果说“你不能没有一个适当的脚本做到这一点”的话也可以:)