客戶要求將微信的帶參二維碼增加log,首次生成的時(shí)候log直接是個(gè)沒顏色的,客戶想要給點(diǎn)顏色看看 ,第一次生成圖片如下
?
| 生成的 | 客戶需要的 |
|
|
原因是因?yàn)榈讏D的數(shù)據(jù)通道和log的數(shù)據(jù)通道不同 為L(zhǎng)? 8像素 黑白,log 為RGB 3x8位像素 真彩
通道?一個(gè)圖片可以包含一到多個(gè)數(shù)據(jù)通道,如果這些通道具有相同的維數(shù)和深度,Pil允許將這些通道進(jìn)行疊加
模式
1 1位像素,黑和白,存成8位的像素
L 8位像素,黑白
P 8位像素,使用調(diào)色板映射到任何其他模式
RGB 3×8位像素,真彩
RGBA 4×8位像素,真彩+透明通道
CMYK 4×8位像素,顏色隔離
YCbCr 3×8位像素,彩色視頻格式
I 32位整型像素
F 32位浮點(diǎn)型像素
現(xiàn)在知道原因了就好弄了 直接上代碼
?
import cStringIO, urllib2,time
from PIL import Image
def CreateLogQrCode(url):
"""生成帶log的二維碼"""""
file = urllib2.urlopen(url)
tmpIm = cStringIO.StringIO(file.read())
base_img = Image.open(tmpIm) #放的是底圖
print "二維碼數(shù)據(jù)通道:",base_img.mode
base_img=base_img.convert("RGB") #將圖片的mode 轉(zhuǎn)成PGB
box = (160, 160, 270, 270) # 底圖上需要P掉的區(qū)域,將圖片放在什么位置上
tmp_img = Image.open('D:/WeChat-Project/Project_ANDY/AndyBiont2/static/upload/5.jpg') #放上去的log
print 'log數(shù)據(jù)通道:',tmp_img.mode
region = tmp_img.resize((box[2] - box[0], box[3] - box[1]),Image.ANTIALIAS)
base_img.paste(region, box)
nowTime = lambda: int(round(time.time() * 1000)) #毫秒級(jí)時(shí)間戳
# base_img.show()
url='D:/WeChat-Project/Project_ANDY/AndyBiont2/static/upload/qrcode_file/%s.png'%nowTime()
base_img.save(url,quality=100) #保存圖片quality 為保存質(zhì)量
return url
url='二維碼地址'
ans=CreateLogQrCode(url)
print ans
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

