在这里的第一篇。

  这篇的是为了说明PIL库中图像的mode参数。

  我做的事情是:

  1. 在本地找了jpg的图,convert为不同mode,将不同的图截取做了个脑图,有个直观的感觉吧。
  2. 把不同mode的图通过np.array()转化为array, 打印出array的shape, 和array[0, 0]的值, 便于理解不同mode的通道和像素值的存储。

  1 部分结果见下:

  

  2 部分代码和结果:

  

# 将不同模式的图片打印出shape 和 [0, 0]像素点的值
from PIL import Image
import matplotlib.pyplot as plt
image = Image.open('images/tower.jpg') # 本地一个文件
mode_list = ['', 'L', 'I', 'F', 'P', 'RGB', 'RGBA', 'CMYK', 'YCbCr' ]
for mode in mode_list:
img = image.convert(mode)
img_data = np.array(img)
print('img_{:>1}.shape: {}' .format(mode, img_data.shape))
print('img_{:>}_data[0, 0]: {}'.format(mode, img_data[0, 0]))
print('---')
# 以下为output
img_1.shape: (1276, 1920)
img_1_data[0, 0]: False
---
img_L.shape: (1276, 1920)
img_L_data[0, 0]: 88
---
img_I.shape: (1276, 1920)
img_I_data[0, 0]: 88
---
img_F.shape: (1276, 1920)
img_F_data[0, 0]: 88.94599914550781
---
img_P.shape: (1276, 1920)
img_P_data[0, 0]: 131
---
img_RGB.shape: (1276, 1920, 3)
img_RGB_data[0, 0]: [ 51 97 147]
---
img_RGBA.shape: (1276, 1920, 4)
img_RGBA_data[0, 0]: [ 51 97 147 255]
---
img_CMYK.shape: (1276, 1920, 4)
img_CMYK_data[0, 0]: [204 158 108 0]
---
img_YCbCr.shape: (1276, 1920, 3)
img_YCbCr_data[0, 0]: [ 88 160 100]
---
 以上可对mode参数有所了解,第一篇拙劣,还望指正。

  最后一点关于颜色模式的,供备注用。
  1. RGB 为真色彩模式, 可组合为 256 x 256 x256 种, 打印需要更改为 CMYK模式, 需要注意数值溢出的问题。
  2. HSB 模式(本篇没有涉及),建立基于人类感觉颜色的方式,将颜色分为色相(Hue),饱和度(Saturation),明亮度(Brightness),这里不详细展开。
  3. CMYK模式,应用在印刷领域,4个字母意思是青、洋红、黄、黑,因为不能保证纯度,所以需要黑。
  4. 位图模式,见1, 颜色由黑和白表示(True, False)。
  5. 灰度模式,只有灰度, 所有颜色转化为灰度值,见L,I,F。
  6. 双色调模式(未有涉及),节约成本将可使用双色调。
  7. Lab模式(未涉及,ps内置),由3通道组成(亮度,a,b)组成,作为RGB到CMYK的过渡。
  8. 多通道模式,删除RGB,CMYK,Lab中某一个通道后,会转变为多通道,多通道用于处理特殊打印,它的每个通道都为256级灰度通道。
  9. 索引颜色模式,用在多媒体和网页,通过颜色表查取,没有则就近取,仅支持单通道,(8位/像素)。

  end

最新文章

  1. 硬件升级win8.1重新安装系统
  2. jQuery dialog 简介
  3. js,jquery获取下拉框选中的option
  4. vs中使用过的扩展和好的nuget库
  5. jquery如何选择带有多个class的元素
  6. c语言数据处理!
  7. "最大工作进程数"导致的WCF调用失败
  8. 利用Matlab生成一个网格化的三维球面(生成直角坐标)
  9. badboy录制兼容性有趣测试
  10. Linux下配置SNAT上网
  11. Web Service的工作原理
  12. 如何面对被抛弃的System.Data.OracleClient
  13. 微信小程序使用nginx方向代理实现内嵌非业务域名
  14. 【公众号系列】超详细SAP HANA JOB全解析
  15. Linux 检查端口gps命令
  16. python 旋转数组 多种解题思路
  17. MT【26】ln(1+x)的对数平均放缩
  18. linux新增动态库后可执行程序找不到的问题
  19. TableStore:多行数据操作
  20. php notes

热门文章

  1. maven添加本地jar
  2. Spark SQL join的三种实现方式
  3. spark or sparkstreaming的内存泄露问题?
  4. VCC、VDD、VSS以及VBAT的区别
  5. 【树形DP】MZOJ_1063_士兵守卫
  6. [Golang学习笔记] 08 链表
  7. 使用HtmlAgilityPack将HtmlTable填入DataTable
  8. 20155203 2016-2017-2 《Java程序设计》第1周学习总结
  9. 20155204 2016-2017-2 《Java程序设计》第9周学习总结
  10. 2016-2017-2 20155322 实验三 敏捷开发与XP实践