[英]How to reduce the palette of PNG image in Python/Pillow to the colors being really used?
[英]How do I reduce the color palette of an image in Python 3?
我已经看到了 Python 2 的答案,但是对它的支持已经结束,并且 Python2 的 Image 模块与 aarch64 不兼容。 我只是想将一些图像转换为完整的 CGA 颜色,而无需手动编辑图像。
提前致谢!
编辑:我想我应该提到我对 Python 还是很陌生。 我想我还应该提到我正在尝试使用来自典型CGA适配器的颜色。
这是使用 PIL 的一种方法-您可能想检查我是否已从此处准确转录颜色列表::
#!/usr/bin/env python3
from PIL import Image
# Create new 1x1 palette image
CGA = Image.new('P', (1,1))
# Make a CGA palette and push it into image
CGAcolours = [
0x00, 0x00, 0x00,
0x00, 0x00, 0xaa,
0x00, 0xaa, 0x00,
0x00, 0xaa, 0xaa,
0xaa, 0x00, 0x00,
0xaa, 0x00, 0xaa,
0xaa, 0x55, 0x00,
0xaa, 0xaa, 0xaa,
0x55, 0x55, 0x55,
0x55, 0x55, 0xff,
0x55, 0xff, 0x55,
0x55, 0xff, 0xff,
0xff, 0x55, 0x55,
0xff, 0x55, 0xff,
0xff, 0xff, 0x55,
0xff, 0xff, 0xff]
CGA.putpalette(CGAcolours)
# Open our image of interest
im = Image.open('swirl.jpg')
# Quantize to our lovely CGA palette, without dithering
res = im.quantize(colors=len(CGAcolours), palette=CGA, dither=Image.Dither.NONE)
res.save('result.png')
这改变了这一点:
进入这个:
或者,如果您真的不想编写任何 Python,您可以使用ImageMagick在命令行上以高度相似的方式进行:
# Create 16-colour CGA swatch in file "cga16.gif"
magick xc:'#000000' xc:'#0000AA' xc:'#00AA00' xc:'#00AAAA' \
xc:'#AA0000' xc:'#AA00AA' xc:'#AA5500' xc:'#AAAAAA' \
xc:'#555555' xc:'#5555FF' xc:'#55FF55' xc:'#55FFFF' \
xc:'#FF5555' xc:'#FF55FF' xc:'#FFFF55' xc:'#FFFFFF' \
+append cga16.gif
这将创建这个 16x1 样本(放大以便您可以看到它):
# Remap colours in "swirl.jpg" to the CGA palette
magick swirl.jpg +dither -remap cga16.gif resultIM.png
毫无疑问,代码可以转换为 EGA、VGA 和其他早期 PC 硬件调色板……甚至是魔方调色板:
导致:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.