zoukankan      html  css  js  c++  java
  • 使用python-pillow替换图片中的单一颜色

    场景

    我需要把下面一张图片中的深黄色(255,255,0)替换成(255,204,0)。使用到pillow库。

    code

    from PIL import Image
    img = Image.open("logo.png") 
    
    for i in range(2048):
        for j in range(2048):
            try:
                r,g,b,alpha = img.getpixel((i,j))
                if r==255 and g==255 and b==0:
                    g=204
                    img.putpixel((i,j), (r,g,b,alpha))
            except Exception as e:
                continue 
    img.show()
    

    问题

    搜索到的结果里不包含alpha,运行有问题,print出来发现有四个值,看到自己一起写的代码里第四个叫alpha,是通道,这里用不到。
    刚开始运行后底色一直由白色到粉红色…费解,遂看了白色的RGB值(255,255,255)因此需要多加个判断:and b==0即可。
    一定要加上try语句,因为不是所有的img.getpixel((i,j))都返回4个值,比如我的例子中白色只有3个值。
    重要信息 实际上我有两张基本一样的图片(下图):一张的黄色是(255,255,0),另一张的黄色是(255,204,0)+(255,255,0)这个我手动画了一部分颜色上去。实际运行程序的时候只有第二个成功替换掉了颜色,第一张尝试几次都不行,原因未知。

    效果

    效果如下,原图(左)新图(右)。图片贴纸来自picsart app。本文部分参考Python图像处理库:Pillow 初级教程
    pic1

  • 相关阅读:
    FastJSON使用笔记
    使用mysql-connector-java出现的错误
    Maven的学习
    前端部分-CSS基础介绍
    前端知识之HTML内容
    python--使用pymyslq操作数据库
    python---反射详解
    python----re正则模块详解
    python---str和repr
    python---random模块详解
  • 原文地址:https://www.cnblogs.com/aubucuo/p/pil1.html
Copyright © 2011-2022 走看看