PIL包中图像的mode参数
2024-10-20 11:38:00
在这里的第一篇。
这篇的是为了说明PIL库中图像的mode参数。
我做的事情是:
- 在本地找了jpg的图,convert为不同mode,将不同的图截取做了个脑图,有个直观的感觉吧。
- 把不同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参数有所了解,第一篇拙劣,还望指正。
最后一点关于颜色模式的,供备注用。
- RGB 为真色彩模式, 可组合为 256 x 256 x256 种, 打印需要更改为 CMYK模式, 需要注意数值溢出的问题。
- HSB 模式(本篇没有涉及),建立基于人类感觉颜色的方式,将颜色分为色相(Hue),饱和度(Saturation),明亮度(Brightness),这里不详细展开。
- CMYK模式,应用在印刷领域,4个字母意思是青、洋红、黄、黑,因为不能保证纯度,所以需要黑。
- 位图模式,见1, 颜色由黑和白表示(True, False)。
- 灰度模式,只有灰度, 所有颜色转化为灰度值,见L,I,F。
- 双色调模式(未有涉及),节约成本将可使用双色调。
- Lab模式(未涉及,ps内置),由3通道组成(亮度,a,b)组成,作为RGB到CMYK的过渡。
- 多通道模式,删除RGB,CMYK,Lab中某一个通道后,会转变为多通道,多通道用于处理特殊打印,它的每个通道都为256级灰度通道。
- 索引颜色模式,用在多媒体和网页,通过颜色表查取,没有则就近取,仅支持单通道,(8位/像素)。
end
最新文章
- 硬件升级win8.1重新安装系统
- jQuery dialog 简介
- js,jquery获取下拉框选中的option
- vs中使用过的扩展和好的nuget库
- jquery如何选择带有多个class的元素
- c语言数据处理!
- ";最大工作进程数";导致的WCF调用失败
- 利用Matlab生成一个网格化的三维球面(生成直角坐标)
- badboy录制兼容性有趣测试
- Linux下配置SNAT上网
- Web Service的工作原理
- 如何面对被抛弃的System.Data.OracleClient
- 微信小程序使用nginx方向代理实现内嵌非业务域名
- 【公众号系列】超详细SAP HANA JOB全解析
- Linux 检查端口gps命令
- python 旋转数组 多种解题思路
- MT【26】ln(1+x)的对数平均放缩
- linux新增动态库后可执行程序找不到的问题
- TableStore:多行数据操作
- php notes
热门文章
- maven添加本地jar
- Spark SQL join的三种实现方式
- spark or sparkstreaming的内存泄露问题?
- VCC、VDD、VSS以及VBAT的区别
- 【树形DP】MZOJ_1063_士兵守卫
- [Golang学习笔记] 08 链表
- 使用HtmlAgilityPack将HtmlTable填入DataTable
- 20155203 2016-2017-2 《Java程序设计》第1周学习总结
- 20155204 2016-2017-2 《Java程序设计》第9周学习总结
- 2016-2017-2 20155322 实验三 敏捷开发与XP实践