【python-小工具-3】抠图-透明化背景-修改图片颜色
1.图片处理-修改颜色
有时候有种困扰!把网上的截屏,或者一般图片拖到PPT或者其他文档里面去,会有一个明显的白底框框。
放进PPT里面也太丑了点,干脆把图片的白底给弄透明,可就为这下个PS,不符合程序员的风格!
能写代码自动化解决的当然写代码了!
对了,这个还能把手机拍照的---手写签名呀~之类的抠出来放进word也毫无违和感了.
from PIL import Imagedef process(self, image_file, old_bk, new_bk, text_color):'''将图像特定颜色改为新颜色,前文改为设定颜色或者原始颜色'''img = Image.open(image_file).convert("RGBA")datas = img.getdata()newData = []for item in datas:if self.is_around(item, old_bk):newData.append(new_bk)else:newData.append(text_color if text_color else item)img.putdata(newData)return img
process函数主要就是干了一件事:
判断像素RGBA是否在某个值附近——修改颜色,否则保持原色 or 改成你想要的。
按理来说,把一个白色的背景搞成渐变色也可以,只需要old_bk设置为白色的RGBA值,new_bk用个yield不断得到渐变的颜色值就好了。有需要的自己做吧~
2.透明化
def transparent(self, image_file, bk_color, text_color=None):process(image_file, bk_color, (0, 0, 0, 0), text_color)
就是把process的参数改成需要的,bk_color一般设置为白底(255,255,255,~),后面改变的参数设置为透明(~,~,~,0)
RGBA最后一位表示透明度。text_color 为None 的时候就让图片的前景保持不变。
这样就实现了抠图的效果。比方下面这个CSDN的图标,放进PPT里面明显很突兀;抠图完就成这样了,舒服多了~
3.代码
import osfrom PIL import Imageclass Transcolor():def __init__(self):self.color_map = {'white': (255, 255, 255, 0),'black': (0, 0, 0, 0),}def process(self, image_file, old_bk, new_bk, text_color):'''将图像特定颜色改为新颜色,前文改为设定颜色或者原始颜色'''img = Image.open(image_file).convert("RGBA")datas = img.getdata()newData = []for item in datas:if self.is_around(item, old_bk):newData.append(new_bk)else:newData.append(text_color if text_color else item)img.putdata(newData)return imgdef transparent(self, image_file, bk_color='white', text_color=None):#透明化bk = self.formulate(bk_color)text_color = self.formulate(text_color) if text_color else Nonereturn self.process(image_file, bk, (0, 0, 0, 0), text_color)def is_around(self, color1, color2):for i in range(3):if abs(color1[i] - color2[i]) > 30:return Falsereturn Truedef formulate(self, var): #格式检查if var in self.color_map.keys():return self.color_map[var]for n, i in enumerate(var):if i < 0 or i > 255 or n >= 4:print('Error:请输入white|black|phote_w|(220,220,220,0)RGBA形式')exit(1)return varif __name__ == "__main__":t = Transcolor()photo_dir = 'res/photo'for i in os.listdir(photo_dir):if os.path.splitext(i)[1].lower() in ['.jgp', '.png', '.jpeg', '.bmp']:path = os.path.join(photo_dir, i)t.transparent(path).save(path + '.png')
【python-小工具-3】抠图-透明化背景-修改图片颜色相关推荐
- 【Python小工具】若干图片合并生成动态图(.gif)
相信很多学生党.上班族在日常的学习.科研.办公中总会有一些比较特殊的需求,本人作为一个理工科(非计算机相关专业)学生和大家一样.有时好不容易找到了比较心仪的工具,却发现还要收费,质量和使用的便捷性也不 ...
- python小工具myqr生成动态二维码
python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...
- 自己整理实现的python小工具
文章目录 记录一些自己整理实现的python小工具 python获取文件路径 pytho使用opencv进行图像拼接 记录一些自己整理实现的python小工具 python获取文件路径 因为有的程序需 ...
- python小工具—图片转为字符txt
python小工具-图片转为字符txt 图片转为字符txt python小工具-图片转为字符txt 效果展示 转换图片信息 图片信息转字符 完整代码 效果展示 转换图片信息 将图片的rgb色彩信息转为 ...
- 自制python小工具(3)——Gadgets1.1
自制python小工具(3)--Gadgets 1.1 文章目录 自制python小工具(3)--Gadgets 1.1 1. 前言 2. 功能实现 2.1 主程序界面 2.1.1 标签与按钮 2.1 ...
- python小工具之pdf转excel
python小工具记录 #xlwt只支持后缀xls文件 不支持xlxs文件 #openpyxl不支持xls文件 支持xlxs文件 import pdfplumber import xlwt wb = ...
- Python小工具之翻译词典
Python小工具之翻译词典 功能实现:请求网易有道词典的接口,获取翻译结果 代码如下: # -*- coding:utf-8 -*- """ Python制作翻译词典 ...
- Python小工具——唐诗三百首朗读
Python小工具--唐诗三百首朗读 工具简介 系统语音朗读唐诗三百首,可自己选择要朗读的唐诗,可搜索查找唐诗进行朗读,可用于幼儿园或小学生熟悉唐诗,积累文学素养. 工具界面 1.打开工具 可查看当前 ...
- 【Python小工具】一文学会制作个性化二维码
Python小工具系列是一个使用Python实现各种各样有意思的小玩意儿的系列,包括制作个性化的二维化.词云.简单爬虫等,持续更新中,如果你感兴趣就关注一波吧! 一.基本介绍
最新文章
- 如何查看 el-form-item 的prop属性_PHP 7.4中的类型属性(Typed Properties)
- HTTPPost/AFNetWorking/JSONModel/NSPredicate
- 【Python4】字符分割识别,车牌识别矫正,移动物检测,Caffe_SSD三字码识别,ckpt文件转pb文件,人脸检测与识别
- VHDL数字钟的设计与制作
- vue node --- 前后端联系的知识梳理
- Unity2018新功能抢先预览 | Preset功能
- linux命令行安装tomcat8,CentOS环境下安装JDK、Tomcat及相关Linux命令
- linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结
- 推荐个51CTO家园的活动哈
- Kotlin基础-对象声明和表达式
- loadrunner11中文版破解文档+录制脚本(图/文)
- windows上查看MD5
- chrome调试微信网页_2022.2.9可行
- 英伟达NVIDIA系列显卡GPU CUDA数据对比排行
- 小程序新爆点,小程序能分享朋友圈了
- linux的gromacs模拟分子运动,动力学模拟gromacs(绝对详细).ppt
- 【App自动化测试】(四)Capability配置参数说明
- Hikvison对接NVR实现WEB无插件开发包实现前端视频预览(html、vue、nginx代理)
- 报Warning如下: Warning: The CUDA driver must recompile the GPU librariesbecause your device is more rec
- 个人对408计算机组成原理中PC(程序计数器)位数的理解
热门文章
- java web之数据库的连接(使用JDBC连接sql server 2017)
- 文章标题过长掩藏CSS方法
- Linux-软RAID示例
- sparkStreaming的实时处理,官方自带程序和idea代码完成,来解决WordCount案列,还有和kafka集群结合来使用最流行的实时数据处理框架
- jsonp跨域请求(PHP后端方式)
- oracle触发器中的after insert后继续触发,Oracle之后插入触发器
- 研磨数据结构与算法-07递归之高级应用
- Android防微信表情功能
- 服务器系统安装完为什么进不了游戏,战魂铭人无法连接服务器 进不了游戏解决方法...
- 12个学霸都在用的学习神器,让你的学习效率翻几倍!