滑动验证码 图片处理部分

滑动验证码 图片处理部分

from PIL import Image

class ImgProcess:

location_list = [

{'y': -58, 'x': -157},

{'y': -58, 'x': -145},

{'y': -58, 'x': -265},

{'y': -58, 'x': -277},

{'y': -58, 'x': -181},

{'y': -58, 'x': -169},

{'y': -58, 'x': -241},

{'y': -58, 'x': -253},

{'y': -58, 'x': -109},

{'y': -58, 'x': -97},

{'y': -58, 'x': -289},

{'y': -58, 'x': -301},

{'y': -58, 'x': -85},

{'y': -58, 'x': -73},

{'y': -58, 'x': -25},

{'y': -58, 'x': -37},

{'y': -58, 'x': -13},

{'y': -58, 'x': -1},

{'y': -58, 'x': -121},

{'y': -58, 'x': -133},

{'y': -58, 'x': -61},

{'y': -58, 'x': -49},

{'y': -58, 'x': -217},

{'y': -58, 'x': -229},

{'y': -58, 'x': -205},

{'y': -58, 'x': -193},

{'y': 0, 'x': -145},

{'y': 0, 'x': -157},

{'y': 0, 'x': -277},

{'y': 0, 'x': -265},

{'y': 0, 'x': -169},

{'y': 0, 'x': -181},

{'y': 0, 'x': -253},

{'y': 0, 'x': -241},

{'y': 0, 'x': -97},

{'y': 0, 'x': -109},

{'y': 0, 'x': -301},

{'y': 0, 'x': -289},

{'y': 0, 'x': -73},

{'y': 0, 'x': -85},

{'y': 0, 'x': -37},

{'y': 0, 'x': -25},

{'y': 0, 'x': -1},

{'y': 0, 'x': -13},

{'y': 0, 'x': -133},

{'y': 0, 'x': -121},

{'y': 0, 'x': -49},

{'y': 0, 'x': -61},

{'y': 0, 'x': -229},

{'y': 0, 'x': -217},

{'y': 0, 'x': -193},

{'y': 0, 'x': -205}

]

def get_merge_image(self, filename):

"""

根据图片位置合并还原

:param filename: 图片

:param location: 位置

:return:合并后的图片对象

"""

im = Image.open(filename)

new_im = Image.new('RGB', (260, 116))

im_list_upper = []

im_list_lower = []

for location in self.location_list:

if location['y'] == -58:

im_list_upper.append(im.crop((abs(location['x']), 58, abs(location['x']) + 10, 116)))

if location['y'] == 0:

im_list_lower.append(im.crop((abs(location['x']), 0, abs(location['x']) + 10, 58)))

x_offset = 0

for img in im_list_upper:

new_im.paste(img, (x_offset, 0))

x_offset += img.size[0]

x_offset = 0

for img in im_list_lower:

new_im.paste(img, (x_offset, 58))

x_offset += img.size[0]

return new_im

def is_px_equal(self, img1, img2, x, y):

"""

判断两个像素是否相同

:param img1: 图片1

:param img2:图片2

:param x:位置1

:param y:位置2

:return:像素是否相同

"""

pix1 = img1.load()[x, y]

pix2 = img2.load()[x, y]

threshold = 60

if abs(pix1[0] - pix2[0]) < threshold and abs(pix1[1] - pix2[1]) < threshold and abs(pix1[2] - pix2[2]) < threshold:

return True

else:

return False

def get_gap(self, img1, img2):

"""

获取缺口偏移量

:param img1: 不带缺口图片

:param img2: 带缺口图片

:return:

"""

left = 0

for i in range(left, img1.size[0]):

for j in range(img1.size[1]):

if not self.is_px_equal(img1, img2, i, j):

left = i

return left

return left

这里的 list_upper ,ist_lower 有什么用?

以上是 滑动验证码 图片处理部分 的全部内容, 来源链接: utcz.com/p/937630.html

回到顶部