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】抠图-透明化背景-修改图片颜色相关推荐

  1. 【Python小工具】若干图片合并生成动态图(.gif)

    相信很多学生党.上班族在日常的学习.科研.办公中总会有一些比较特殊的需求,本人作为一个理工科(非计算机相关专业)学生和大家一样.有时好不容易找到了比较心仪的工具,却发现还要收费,质量和使用的便捷性也不 ...

  2. python小工具myqr生成动态二维码

    python小工具myqr生成动态二维码 (一)安装 (二)使用 (一)安装 命令: pip install myqr 安装完成后,就可以在命令行中输入 myqr 查看下使用帮助: myqr --he ...

  3. 自己整理实现的python小工具

    文章目录 记录一些自己整理实现的python小工具 python获取文件路径 pytho使用opencv进行图像拼接 记录一些自己整理实现的python小工具 python获取文件路径 因为有的程序需 ...

  4. python小工具—图片转为字符txt

    python小工具-图片转为字符txt 图片转为字符txt python小工具-图片转为字符txt 效果展示 转换图片信息 图片信息转字符 完整代码 效果展示 转换图片信息 将图片的rgb色彩信息转为 ...

  5. 自制python小工具(3)——Gadgets1.1

    自制python小工具(3)--Gadgets 1.1 文章目录 自制python小工具(3)--Gadgets 1.1 1. 前言 2. 功能实现 2.1 主程序界面 2.1.1 标签与按钮 2.1 ...

  6. python小工具之pdf转excel

    python小工具记录 #xlwt只支持后缀xls文件 不支持xlxs文件 #openpyxl不支持xls文件 支持xlxs文件 import pdfplumber import xlwt wb = ...

  7. Python小工具之翻译词典

    Python小工具之翻译词典 功能实现:请求网易有道词典的接口,获取翻译结果 代码如下: # -*- coding:utf-8 -*- """ Python制作翻译词典 ...

  8. Python小工具——唐诗三百首朗读

    Python小工具--唐诗三百首朗读 工具简介 系统语音朗读唐诗三百首,可自己选择要朗读的唐诗,可搜索查找唐诗进行朗读,可用于幼儿园或小学生熟悉唐诗,积累文学素养. 工具界面 1.打开工具 可查看当前 ...

  9. 【Python小工具】一文学会制作个性化二维码

    Python小工具系列是一个使用Python实现各种各样有意思的小玩意儿的系列,包括制作个性化的二维化.词云.简单爬虫等,持续更新中,如果你感兴趣就关注一波吧! 一.基本介绍

最新文章

  1. 如何查看 el-form-item 的prop属性_PHP 7.4中的类型属性(Typed Properties)
  2. HTTPPost/AFNetWorking/JSONModel/NSPredicate
  3. 【Python4】字符分割识别,车牌识别矫正,移动物检测,Caffe_SSD三字码识别,ckpt文件转pb文件,人脸检测与识别
  4. VHDL数字钟的设计与制作
  5. vue node --- 前后端联系的知识梳理
  6. Unity2018新功能抢先预览 | Preset功能
  7. linux命令行安装tomcat8,CentOS环境下安装JDK、Tomcat及相关Linux命令
  8. linux java mysql 乱码_Linux下MySQL的字符集乱码问题总结
  9. 推荐个51CTO家园的活动哈
  10. Kotlin基础-对象声明和表达式
  11. loadrunner11中文版破解文档+录制脚本(图/文)
  12. windows上查看MD5
  13. chrome调试微信网页_2022.2.9可行
  14. 英伟达NVIDIA系列显卡GPU CUDA数据对比排行
  15. 小程序新爆点,小程序能分享朋友圈了
  16. linux的gromacs模拟分子运动,动力学模拟gromacs(绝对详细).ppt
  17. 【App自动化测试】(四)Capability配置参数说明
  18. Hikvison对接NVR实现WEB无插件开发包实现前端视频预览(html、vue、nginx代理)
  19. 报Warning如下: Warning: The CUDA driver must recompile the GPU librariesbecause your device is more rec
  20. 个人对408计算机组成原理中PC(程序计数器)位数的理解

热门文章

  1. java web之数据库的连接(使用JDBC连接sql server 2017)
  2. 文章标题过长掩藏CSS方法
  3. Linux-软RAID示例
  4. sparkStreaming的实时处理,官方自带程序和idea代码完成,来解决WordCount案列,还有和kafka集群结合来使用最流行的实时数据处理框架
  5. jsonp跨域请求(PHP后端方式)
  6. oracle触发器中的after insert后继续触发,Oracle之后插入触发器
  7. 研磨数据结构与算法-07递归之高级应用
  8. Android防微信表情功能
  9. 服务器系统安装完为什么进不了游戏,战魂铭人无法连接服务器 进不了游戏解决方法...
  10. 12个学霸都在用的学习神器,让你的学习效率翻几倍!