客戶要求將微信的帶參二維碼增加log,首次生成的時候log直接是個沒顏色的,客戶想要給點顏色看看 ,第一次生成圖片如下
?
生成的 | 客戶需要的 |
![]() |
![]() |
原因是因為底圖的數(shù)據(jù)通道和log的數(shù)據(jù)通道不同 為L? 8像素 黑白,log 為RGB 3x8位像素 真彩
通道?一個圖片可以包含一到多個數(shù)據(jù)通道,如果這些通道具有相同的維數(shù)和深度,Pil允許將這些通道進行疊加
模式
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位浮點型像素
現(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)) #毫秒級時間戳
# 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號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
