python在内存中拼接图片,并且进行改变图片尺寸,并且压缩图片大小

#写爬取的图片到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)
    ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值