【发布时间】:2016-06-22 21:45:01
【问题描述】:
我正在使用自定义批处理脚本来制作文件夹中所有 PNG 图像的大小调整副本(33% 和 66%)。这是我的代码:
for f in $(find /myFolder -name '*.png');
do
sudo cp -a $f "${f/%.png/-3x.png}";
sudo convert $f -resize 66.67% "${f/%.png/-2x.png}";
sudo convert $f -resize 33.33% $f;
done
它工作正常,除非原始图像被索引。在这种情况下,图像的较小版本是 RGB(因此文件大小比原始图像更大)。
我尝试了几个版本,但都没有成功。我想应该解决这个问题的一个是休闲:
for f in $(find /myFolder -name '*.png');
do
sudo cp -a $f "${f/%.png/-3x.png}";
sudo convert $f -define png:preserve-colormap -resize 66.67% "${f/%.png/-2x.png}";
sudo convert $f -define png:preserve-colormap -resize 33.33% $f;
done
但它不起作用。
编辑:
这是更新的co,但它仍然无法正常工作(见附图——左为原图,右为调整大小):
for f in $(find /myFolder -name '*.png');
do
sudo cp -a $f "${f/%.png/-3x.png}";
numberOfColors=`identify -format "%k" $f`
convert "$f" \
\( +clone -resize 66.67% -colors $numberOfColors -write "${f/%.png/-2x.png}" +delete \) \
-resize 33.33% -colors $numberOfColors "$f"
done
【问题讨论】:
-
您想保留一个特定的、准确的颜色图吗?或者您想确保调整大小的图像很小并且索引到 a 颜色图,但您并不真正介意该颜色图中的内容?答案会有所不同。
-
我不介意彩色地图。我想确保调整大小的图像很小。这适用于网络上的视网膜图像。第一个(原始图像)用于具有 3dpi 屏幕的屏幕等等。
-
您能否单独提供原始图像 - 而不是加入输出图像。
-
如何使用
convert image.png -format "%[type]" info: | grep -i Palette检测托盘化图像,如果托盘化,使用-colors 250以获得最佳结果,您可以使用托盘化输出图像。 -
我没有发现当前版本的 ImageMagick (6.9.3-7) 存在这个问题。您的脚本工作正常并生成干净的 -2x 和 -3x 图像。你用的是什么版本? (使用“convert | head -2”来找出)。
标签: imagemagick png imagemagick-convert indexed-image