我想将图像限制为 16 种颜色,但只能使用一组特定的更大颜色中的颜色
I want to limit an image to 16 colors, but ONLY colors from a specific larger set of colors
我正在尝试将图像转换为非常具体的配色方案,我有一张包含 6684 种独特颜色的图像:
我只想专门使用此图片中的颜色,但它太大而无法用作调色板(限制为 256)。
除此之外,我转换的任何图像都应具有 MAX 16 种索引颜色。 (例如:我转换的任何图像都应该只有 16 种颜色,它可以像 4 位图像一样显示,并且所有这 16 种颜色都必须是我上面发布的图像中也存在的颜色。)
是否可以在 imagemagick 中执行此操作?
假设您提供的图像名为 palette.png
,我认为您希望将输入图像中的所有颜色重新映射到该调色板,然后根据最近邻插值法将颜色减少到 16 种颜色这会给你这样的命令:
magick +dither input.png -remap palette.png -interpolate nearest -colors 16 result.png
如果这不是您想要的,您可以通过将其分解为多个步骤并查看部分结果来调试上面的内容:
magick +dither input.png -remap palette.png partial.png
并且:
magick partial.png -interpolate nearest -colors 16 result.png
您可能想尝试将 +dither
替换为 -dither Riemersma
或 -dither FloydSteinberg
。
请注意,使用 "Nearest Neighbour" 插值可避免在图像中引入任何新颜色 - 它仅使用现有图像中最近的邻居,而不是平均或计算新颜色像素.
我正在尝试将图像转换为非常具体的配色方案,我有一张包含 6684 种独特颜色的图像:
我只想专门使用此图片中的颜色,但它太大而无法用作调色板(限制为 256)。
除此之外,我转换的任何图像都应具有 MAX 16 种索引颜色。 (例如:我转换的任何图像都应该只有 16 种颜色,它可以像 4 位图像一样显示,并且所有这 16 种颜色都必须是我上面发布的图像中也存在的颜色。)
是否可以在 imagemagick 中执行此操作?
假设您提供的图像名为 palette.png
,我认为您希望将输入图像中的所有颜色重新映射到该调色板,然后根据最近邻插值法将颜色减少到 16 种颜色这会给你这样的命令:
magick +dither input.png -remap palette.png -interpolate nearest -colors 16 result.png
如果这不是您想要的,您可以通过将其分解为多个步骤并查看部分结果来调试上面的内容:
magick +dither input.png -remap palette.png partial.png
并且:
magick partial.png -interpolate nearest -colors 16 result.png
您可能想尝试将 +dither
替换为 -dither Riemersma
或 -dither FloydSteinberg
。
请注意,使用 "Nearest Neighbour" 插值可避免在图像中引入任何新颜色 - 它仅使用现有图像中最近的邻居,而不是平均或计算新颜色像素.