#写爬取的图片到redis
r = response.body
base64_data = base64.b64encode(r) # 读取图片转换的二进制文件,并给赋值
self.rds.set(img_name, base64_data)
#取得redis中的图片二进制文件在内存中进行拼接
total_width = 8 * 512
total_height = 4 * 512
new_image = Image.new('RGB', (total_width, total_height))
x_offset = 0
y_offset = 0
count = 1
listkeys.sort(key=lambda x: tuple(int(i) for i in re.findall('\d+', str(x))[-3:]))
images = map(Image.open, [BytesIO(base64.b64decode(data)) for data in spider.rds.mget(listkeys)])
for subitem in images:
new_image.paste(subitem, (x_offset, y_offset))
x_offset += subitem.size[0]
if count % 8 == 0:
x_offset = 0
y_offset += subitem.size[0]
count = 1
else:
count += 1
new_image.resize((3328, 1664), Image.ANTIALIAS)
imgByteArr = BytesIO()
new_image.save(imgByteArr, format='JPEG') # quality
# new_image.save(settings["PIC_PATH"] + "\\" + item[0] + '.jpg', quality=75)
imgByteArr = imgByteArr.getvalue()
#接下来处理方式有:
#方式一:接下来可以将imgByteArr保存到sqlite里面(对应sqlite里面的字段哪位BLOB字段)
item_point["resultbyte"] = sqlite3.Binary(imgByteArr)
#方式二:
with open('./fgq.jpg','wb')as f:
f.write(imgByteArr)
......
python在内存中拼接图片,并且进行改变图片尺寸,并且压缩图片大小
最新推荐文章于 2024-04-16 10:47:27 发布