2016年4月

Python2生成简单验证码

使用python2.7环境编写,原因是Python2.7内置了PIL库,而Python3需要手动安装Pillow库,且Pillow还依赖几个其他的库。功能很简单,所以就不想折腾了。

生成验证码分为下列步骤:

  • 生成随机字符串
  • 用PIL的ImageDraw生成空白画布和背景
  • 画出字符
  • 填充噪点
  • 用滤镜对图片进行模糊处理
#!/usr/bin/env python
# encoding: utf-8

from PIL import Image, ImageDraw, ImageFont, ImageFilter
import random
import string
def get_chars():
    char_list=[random.choice(string.ascii_letters) for i in range(4)]
    return (char_list)
def get_color():
    return(random.randint(30,106),random.randint(30,100),random.randint(30,100))
def create_pic_code():
    parameter={'size':(120,30),
               'img_type':'jpeg',
              'bg_color':(180,180,180),
               }
    img=Image.new('RGB',parameter['size'],parameter['bg_color'])
    draw=ImageDraw.Draw(img)

    #draw text
    chars=get_chars()
    font=ImageFont.truetype('./SourceCodePro-Medium.ttf',30)
    for i in range(len(chars)):
        draw.text((30*i + 10,0),chars[i],font=font,fill=get_color())
    #background
    for tmp in range(2000):
        draw.point((random.randint(0,parameter['size'][0]),random.randint(0,parameter['size'][1])),fill=get_color())

    ##filter
    #img=img.filter(ImageFilter.BLUR)
    img.save('chars.jpg','jpeg')
if __name__=='__main__':
    create_pic_code()

解决Debian和windows相差八小时的问题

windows在查询时间时,采用读取CMOS时间作为标准时间,而Linux如果采用UTC(世界协调时)时间,则会在读取CMOS时间后,按照时区(北京时间为东八区)来计算时间,所以如果不小心在Linux中启用了UTC时间,就总是会和windows相差八小时。
解决办法如下:
在Debian7以后,关于时间的配置文件从/etc/default/rcS中移到了/etc/adjtime。

vim /etc/adjtime
将UTC替换为LOCAL

如果没有adjtime这个文件

sudo hwclock --adjust#生成文件

完成以后,

sudo hwclock --hctosys

将时间写入CMOS