python制作索引图像

一、什么是索引图

索引图像是一种把像素值直接作为RGB调色板下标的图像。索引图像可把像素值“直接映射”为调色板数值。
一幅索引图包含一个数据矩阵data和一个调色板矩阵map,数据矩阵可以是uint8,uint16或双精度类型的,而调色板矩阵则总是一个m×3的双精度矩阵。
索引模式和灰度模式比较类似,它的每个象素点也可以有256种颜色容量,但它可以负载彩色。灰度模式的图像最多只能有256种颜色。当图像转换成索引模式时,系统会自动根据图像上的颜色归纳出能代表大多数的256种颜色,就象一张颜色表,然后用这256种来代替整个图像上所有的颜色信息。
索引的图像只支持一个图层,并且只有一个索引彩色通道。
索引模式的图像就像是一块块由彩色的小瓷砖所拼成的,由于它最多只能有256种彩色,所以它所形成的文件相对其它彩色要小得多。索引模式的另一个好处是它所形成的每一个颜色都有其独立的索引标识。当这种图像在网上发布时,只要根据其索引标识将图像重新识别,它的颜色就完全还原了。
索引模式主要用于网络上的图片传输和一些对图像象素、大小等有严格要求的地方。
摘自百度百科

简单来说类似于有颜色的灰度图。
二、索引图像在python中的表示
在使用python制作索引图像是要用到Pillow库,其中P模式就是索引图像模式。
python制作索引图像_第1张图片
·三.如何制作索引图
使用Pilow库中的这个函数
Image.putpalette(data, rawmode=’RGB’)
Attaches a palette to this image. The image must be a “P” or “L” image, and the palette sequence must contain 768 integer values, where each group of three values represent the red, green, and blue values for the corresponding pixel index. Instead of an integer sequence, you can use an 8-bit string.
Parameters:
• data – A palette sequence (either a list or a string).
• rawmode – The raw mode of the palette.
示例图片
1、灰度图
python制作索引图像_第2张图片
制作完成后的图像
python制作索引图像_第3张图片
代码示例

# coding:utf-8
'''
制作索引图
'''
from random import randint
from PIL import Image
def randomPalette(length, min, max):
    return [randint(min, max) for x in xrange(length)]
path = '1_127.png'
img = Image.open(path)
# img.show()
i = randomPalette(768, 0, 255)
print i
print len(i)
img.putpalette(i)
print img
img.show()
img.save('2.png')

第一张图是灰度图,里面只有3个值0,1,2下面的图是生成的索引图片。根据灰度图的值然后和生成的随机768个数,每三个数表示一个rgb值 做map映射 0表示第一个rgb值 1表示第二个rgb值,以此类推
img.putpalette(i)改为 img.putpalette([0,0,0,0,255,0,0,0,255])生成的索引图如下
黑色代表原灰度值为0,蓝色代表原灰度值为1,蓝色代表原灰度值为2
python制作索引图像_第4张图片

你可能感兴趣的:(python学习)