python 3 패키지 설명

python 3 패키지 설명

ubuntu 12.04LST PIL (https://github.com/sloonz/pil-py3k)
필요: 
설명http://pillow.readthedocs.org/en/latest/installation.html#linux-installation)
libjpeg8
libjpeg8-dev
libfreetype6
libfreetype6-dev 
zlib1g-dev 
libtiff4-dev
liblcms1-dev
libwebp-dev
tcl8.5-dev
tk8.5-dev
필요 한 모든 모듈 을 다 설치 하고 이것 을 보 세 요(http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/)
그리고 PIL.
인터넷 에 마음 좋 은 사람 이 쓴 인증 코드 생 성 예 를 붙 여 주세요.
#Fly web app - Verification Code
# -*- coding: utf-8 -*-
import random
from io import BytesIO
import Image, ImageDraw, ImageFont
\#특히 주의 from PIL import Image 와 import Image 의 차 이 는 PIL 패키지 가 import xxx 이기 때문에 from xxx import yy 로 쓸 수 없습니다.
class VCode:
    def __init__(self,size=(100,30),length=4,font='',
                 font_color=(51,102,204),font_size=25,font_bg=(255,255,255),
                 line=(3,5),pointBorder = (50,47),save_type= 'JPEG',quality=100):
        """
        인증번호 생 성 클래스
        인자:
            size -  그림 높이(width,height)
            length-인증번호 길이
            font-글꼴 경로
            font_color-글꼴 색상(허용:\#FF 0000 또는 RGB)
            font_size-글꼴 크기
            font_배경 색
            line-간섭 선(최소,최대)
            pointBorder-산 점(크 면 클 수록 적 음)
            save_type-저장 형식
            품질-품질
        """
        self._size = size
        self._font = font
        self._font_color = self._str_hex(font_color)
        self._font_size = font_size
        self._length = length
        self._font_bg = self._str_hex(font_bg)
        self._save_type = save_type
        self._quality = quality
        #초기 화
        self._im = None
        self._draw = None
        self._code = ''
        self._char = 'abcdefghkmnprstuvwyzABCDEFGHKLMNPRSTUVWYZ23456789'
        self._pointBorder = pointBorder
        self._line = line
    def Generate(self):
        """인증 코드 를 만 들 고 이미지 내용 과 인증 코드 를 되 돌려 줍 니 다.""
        #코드 생 성
        random_code = self._randomCode()
        self._code =  '%s' % ''.join(random_code)
        code_str = '%s' % ' '.join(random_code)
        #이미지 개체
        self._im = Image.new('RGB',self._size,self._font_bg)
        self._draw = ImageDraw.ImageDraw(self._im)
        imFont = ImageFont.truetype(self._font,self._font_size)
        w,h = imFont.getsize(self._code)
        xy = ((self._size[0]-w)/2,(self._size[1]-h)/2)
        self._draw.text(xy,code_str,fill=self._font_color,font=imFont)
        #방해 점 을 그리다
        self._createPoints()
        #방해 선 을 긋다
        self._createLines()
        #파일 개체
        fp = BytesIO()
        #그림 저장
        self._im.save(fp,self._save_type,quality=self._quality)
        return fp.getvalue(),self._code
    def _str_hex(self,color):
        """색상 값 을 RGB 로 변환 합 니 다""
        if type(color) is str:
            color = color.replace('#','')
            temp_color = (int(color[0:2],16),int(color[2:4],16),int(color[4:6],16))
        else:
            temp_color = color
        return temp_color
    def _randomCode(self):
        """랜 덤 코드 생 성""
        return random.sample(self._char,self._length)
    def _createPoints(self):
        """점 을 찍다
        for x in range(self._size[0]):
            for y in range(self._size[1]):
                flag = random.randint(0, self._pointBorder[0])
                if flag > self._pointBorder[1]:
                    self._draw.point((x, y), fill = self._randomRGB())
                del flag
    def _createLines(self):
        """방해 선 그리 기"."
        lineNum = random.randint(self._line[0], self._line[1])
        for i in range(lineNum):
            begin = (random.randint(0, self._size[0]),
                     random.randint(0, self._size[1])
            )
            end = (random.randint(0, self._size[0]),
                   random.randint(0, self._size[1])
            )
            self._draw.line([begin, end], fill = self._randomRGB())
    def _randomRGB(self):
        """랜 덤 으로 RGB 생 성""
        return (random.randint(0,255),random.randint(0,255),random.randint(0,255))
if __name__ == "__main__":
verification = VCode(font='font/ARLRDBD.TTF')
im, code = verification.Generate()
with open("test.jpeg", "wb") as f:
f.write(im)
print(code)
tornado 로 render html 는 html 의 python 코드 입 니 다.
Tornado 의 템 플 릿 은 제어 문구 와 표현 문 구 를 지원 합 니 다.제어 문 구 는 사용 합 니 다. {% 화해시키다 %} 싸다 {% if len(items) > 2 %} 。표현 문 {{ 화해시키다 }} 싸다 {{ items[0] }} 。
제어 문과 대응 하 는 Python 문장의 형식 은 기본적으로 완전히 같다.우리들 은 지지한다 if 、 for 、 while 화해시키다 try ,이 문장 들 은 논리 가 끝 나 는 위치 에 사용 해 야 한다. {% end %} 그림 내용 을 표시 할 때.jpeg 에 저장 할 필요 가 없습니다.구체 적 으로 아래 를 참고 하 십시오.http://en.wikipedia.org/wiki/Data_URI_scheme\#HTML 은 mako 로 html 에 python 코드 를 끼 워 넣 습 니 다.http://blog.csdn.net/luanruisong/article/details/9414635

좋은 웹페이지 즐겨찾기