python获取图片像素点颜色_Python获取图片位置像素色值及判断色值是否存在


本文背景:

公司项目的广告系统有个功能,给图片模板打指定的颜色值点,根据需要拼合的图片数量,打点数量也不同。设计说他弄好了,运营上传打点后的模板图片时,获取不到打点的位置坐标。于是找研发看是怎么回事,就有了下面的代码。

涛哥解决这个问题

1、判断设计给模板图片打点的位置和数量是否正确

2、判断打点的颜色值是否正确

解决办法一:

使用ubuntu的gnu图片处理软件打开模板图片,放大就可以看到打点像素位置颜色,再用吸管就能知道打点位置颜色是否正确,打点的位置和数量也一目了然。

解决办法二:

码农自然可以写代码解决,好吧,写段python来解决这个问题吧

checkPic.py

Python

#!/usr/bin/python

# -*- coding:utf-8 -*-

from PIL import Image

# 涛哥用代码看是那的错 https://blog.kydbk.com

img = Image.open("test.png")

# 获取图片尺寸的大小(600,600)

print img.size

# 获取图片的格式 png

print img.format

# 获取图片的图像类型 RGBA

print img.mode

# 显示图片

img.show()

# 获取某个像素位置的值

print img.getpixel((126, 52))

# 生成缩略图

# img.thumbnail((128, 128))

# 保存图片

# img.save('image_thumb.jpg', 'JPEG')

"""

# 获取图片指定像素点的像素

def getPngPix(pngPath = "test.png",x = 1,y = 1):

img_src = Image.open(pngPath)

img_src = img_src.convert('RGBA')

img_array = img_src.load()

data = img_array[x,y]

img_src.close()

return data

# 输入当前位置像素 (207,75,90,255)

print(getPngPix("test.png",126,52))

"""

# 判断某像素值是否在图像中

# 查找目标色值 (1,1,1,255)

# 查找目标色值 (2,2,2,255)

# 查找目标色值 (255,250,250,255)

i = 1

j = 1

result = 0

break_flag = False

width = img.size[0]#长度

height = img.size[1]#宽度

for i in range(0,width):#遍历所有长度的点

for j in range(0,height):#遍历所有宽度的点

#每个像素点的颜色RGBA的值(r,g,b,alpha)

data = (img.getpixel((i,j)))#打印该图片的所有点

# 判断RGBA的值

if (data[0]==255 and data[1]==250 and data[2]==250):

# if (data[0]==207 and data[1]==75 and data[2]==90):

result = 1

print"图片中存在该像素!"

break_flag = True

break

if break_flag==True:

break

if break_flag==True:

break

if(result == 0):

print"图片中不存在该像素!"

"""

data = (img.getpixel((i,j)))#打印该图片的所有点

print (data)#打印每个像素点的颜色RGBA的值(r,g,b,alpha)

print (data[0])#打印RGBA的r值

if (data[0]>=170 and data[1]>=170 and data[2]>=170):#RGBA的r值大于170,并且g值大于170,并且b值大于170

img.putpixel((i,j),(234,53,57,255))#则这些像素点的颜色改成大红色

img = img.convert("RGB")#把图片强制转成RGB

img.save("e:/pic/testee1.jpg")#保存修改像素点后的图片

"""

 

 

#!/usr/bin/python

# -*- coding:utf-8 -*-

fromPILimportImage

# 涛哥用代码看是那的错 https://blog.kydbk.com

img=Image.open("test.png")

# 获取图片尺寸的大小(600,600)

printimg.size

# 获取图片的格式 png

printimg.format

# 获取图片的图像类型 RGBA

printimg.mode

# 显示图片

img.show()

# 获取某个像素位置的值

printimg.getpixel((126,52))

# 生成缩略图

# img.thumbnail((128, 128))

# 保存图片

# img.save('image_thumb.jpg', 'JPEG')

"""

# 获取图片指定像素点的像素

def getPngPix(pngPath = "test.png",x = 1,y = 1):

img_src = Image.open(pngPath)

img_src = img_src.convert('RGBA')

img_array = img_src.load()

data = img_array[x,y]

img_src.close()

return data

# 输入当前位置像素 (207,75,90,255)

print(getPngPix("test.png",126,52))

"""

# 判断某像素值是否在图像中

# 查找目标色值 (1,1,1,255)

# 查找目标色值 (2,2,2,255)

# 查找目标色值 (255,250,250,255)

i=1

j=1

result=0

break_flag=False

width=img.size[0]#长度

height=img.size[1]#宽度

foriinrange(0,width):#遍历所有长度的点

forjinrange(0,height):#遍历所有宽度的点

#每个像素点的颜色RGBA的值(r,g,b,alpha)

data=(img.getpixel((i,j)))#打印该图片的所有点

# 判断RGBA的值

if(data[0]==255anddata[1]==250anddata[2]==250):

# if (data[0]==207 and data[1]==75 and data[2]==90):

result=1

print"图片中存在该像素!"

break_flag=True

break

ifbreak_flag==True:

break

ifbreak_flag==True:

break

if(result==0):

print"图片中不存在该像素!"

"""

data = (img.getpixel((i,j)))#打印该图片的所有点

print (data)#打印每个像素点的颜色RGBA的值(r,g,b,alpha)

print (data[0])#打印RGBA的r值

if (data[0]>=170 and data[1]>=170 and data[2]>=170):#RGBA的r值大于170,并且g值大于170,并且b值大于170

img.putpixel((i,j),(234,53,57,255))#则这些像素点的颜色改成大红色

img = img.convert("RGB")#把图片强制转成RGB

img.save("e:/pic/testee1.jpg")#保存修改像素点后的图片

"""

图片扔目录里直接判断是否颜色打正确了,问题解决…
————————————————
转载:https://blog.csdn.net/weixin_39850167/article/details/111446347


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM