1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python获取图片像素点颜色_Python获取图片位置像素色值及判断色值是否存在

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

时间:2019-12-21 10:41:40

相关推荐

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

本文背景:

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

涛哥解决这个问题

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

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

解决办法一:

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

解决办法二:

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

checkPic.py

Python

#!/usr/bin/python

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

from PIL import Image

# 涛哥用代码看是那的错

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")#保存修改像素点后的图片

"""

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

#!/usr/bin/python

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

fromPILimportImage

# 涛哥用代码看是那的错

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")#保存修改像素点后的图片

"""

图片扔目录里直接判断是否颜色打正确了,问题解决…

更多待涛哥学习实践总结分享….

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。