问题描述
我有 9600 个黑色图标 (SVG)。我需要更改笔触和/或填充(如果存在为白色,然后再次为蓝色)。然后我将有两个包裹,一个是白色的,一个是蓝色的。有没有办法在 Adobe Illustrator 中自动执行此操作而无需打开每个文件。 或者其他方式?
我尝试过这样的终端,但没有奏效。
#/bin/sh
COLOR=#fff
sed -i -E 's/fill\="[^"]+"//g; s/stroke\="[^"]+"//g' *.svg
sed -i "s/<path/<path fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<rect/<rect fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polygon/<polygon fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<circle/<circle fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<ellipse/<ellipse fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i "s/<polyline/<polyline fill=\"$COLOR\" stroke=\"$COLOR\"/g" *.svg
sed -i -E "s/stroke\:[^\;]+/stroke\:$COLOR/g" *.svg
sed -i -E "s/fill\:\#[0-9]+/fill\:$COLOR/g" *.svg
解决方法
我相信这可以通过两种方式完成。通过 RegExp 文本替换和通过 Illustrator 脚本。但是 Illustrator 会打开每个文件,当然。并将保存它。这是个问题吗?您无需手动打开文件。
至于文本替换有一个技巧。据 SVG 所知,如果要绘制黑色填充形状,则不需要为该形状添加任何样式描述。黑色填充形状是默认形状。下面是一个黑色矩形的例子:
<rect x="100" y="100" width="100" height="100"/>
这里 a 是蓝色矩形:
<style type="text/css">
.st0{fill:#0000ff}
</style>
<rect x="100" y="100" width="100" height="100" class="st0"/>
因此,除非原始颜色不是黑色,否则将任何颜色更改为任何颜色的任务非常简单。由于黑色填充形状基本上没有类。您需要先为所有没有类的形状添加一些类。它需要更古怪的 RegExp。