오늘 배울 내용은 Python을 사용해 임의의 중국어 인증코드를 생성하고 이미지를 .jpeg 형식으로 저장하는 방법입니다. 필요한 친구들이 참고하면 됩니다.
그 전에 꼭 먼저 Python의 PIL 라이브러리를 이해하십시오. PIL은 Python Imaging Library의 약어입니다. PIL은 자르기, 변환, 회전, 크기 변경 등과 같은 일련의 모듈과 방법을 제공하는 Python 이미지 처리 라이브러리입니다. PIL 라이브러리에서 모든 이미지는 Image 객체로 표시되므로 이미지를 로드하는 가장 간단한 형식은 다음과 같습니다.
from PIL import Image image = Image.open("1.jpeg")
In PIL 라이브러리 중 가장 일반적으로 사용되는 모듈은 Image, ImageDraw, ImageEnhance, ImageFile 등입니다.
PIL 다운로드 주소는 다음과 같습니다. http://www.pythonware.com/products/pil/
다음으로 PIL의 몇 가지 일반적인 작업을 알아보세요.
(1) 사진 크기 변경
from PIL import Image image = Image.open("1.jpeg") new_img = image.resize((256,256),Image.BILINEAR) new_img.save("2.jpeg")
(2) 사진 회전
from PIL import Image image = Image.open("1.jpeg") new_img = image.rotate(45) new_img.save("2.jpeg")
(3) 직선 그리기
PIL 라이브러리의 ImageDraw 모듈은 직선, 호, 타원, 직사각형 등을 그릴 수 있는 그래픽 그리기의 기본 기능을 제공합니다.
from PIL import Image,ImageDraw image = Image.open("2.jpeg") draw = ImageDraw.Draw(image) width,height = image.size draw.line(((0,0),(width-1,height-1)),fill=255) draw.line(((0,height-1),(width-1,0)),fill=255) image.save("2.jpeg")
(4) 원 그리기
from PIL import Image,ImageDraw image = Image.open("2.jpeg") draw = ImageDraw.Draw(image) width,height = image.size draw.arc((0,0,width-1,height-1),0,360,fill=255) image.save("2.jpeg")
더 많은 방법은 사용 가능 도움말 문서를 참조하세요.
이제 Python을 사용하여 중국어 인증코드를 생성하는 방법을 살펴보겠습니다. 사실 이 질문은 간단합니다. 일반적으로 네트워크 시스템이 비밀번호를 해독하기 위해 무제한 로그인 시도를 하는 것을 방지하기 위해 확인 코드가 사용된다는 것을 우리 모두 알고 있습니다. 그런 다음 이 그림을 확인하기 위해 무작위로 중국어 문자를 생성해야 합니다. 🎜>
사진은 매우 흐릿하게 나타나 로봇 인식을 효과적으로 방해합니다. 따라서 한자를 무작위로 생성하는 것 외에도 간섭선 등을 추가해야 합니다.# -*- coding: utf-8 -*- from PIL import Image,ImageDraw,ImageFont import random import math, string class RandomChar(): @staticmethod def Unicode(): val = random.randint(0x4E00, 0x9FBF) return unichr(val) @staticmethod def GB2312(): head = random.randint(0xB0, 0xCF) body = random.randint(0xA, 0xF) tail = random.randint(0, 0xF) val = ( head << 8 ) | (body << 4) | tail str = "%x" % val return str.decode('hex').decode('gb2312') class ImageChar: def __init__(self, fontColor = (0, 0, 0), size = (100, 40), fontPath = 'SIMSUN.TTC', bgColor = (255, 255, 255), fontSize = 20): self.size = size self.fontPath = fontPath self.bgColor = bgColor self.fontSize = fontSize self.fontColor = fontColor self.font = ImageFont.truetype(self.fontPath, self.fontSize) self.image = Image.new('RGB', size, bgColor) def rotate(self): self.image.rotate(random.randint(0, 30), expand=0) def drawText(self, pos, txt, fill): draw = ImageDraw.Draw(self.image) draw.text(pos, txt, font=self.font, fill=fill) def randRGB(self): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) def randPoint(self): (width, height) = self.size return (random.randint(0, width), random.randint(0, height)) def randLine(self, num): draw = ImageDraw.Draw(self.image) for i in range(0, num): draw.line([self.randPoint(), self.randPoint()], self.randRGB()) def randChinese(self, num): gap = 5 start = 0 for i in range(0, num): char = RandomChar().GB2312() x = start + self.fontSize * i + random.randint(0, gap) + gap * i self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB()) self.rotate() self.randLine(18) def save(self, path): self.image.save(path) ic = ImageChar(fontColor=(100,211, 90)) ic.randChinese(4) ic.save("1.jpeg")실행 결과:
더 많은 pythonPIL 모듈 및 무작위로 생성된 중국어 확인 코드 메소드 관련 글은 PHP 중국어 홈페이지를 주목해주세요!