Python generates Digital Image Code sharing,

Source: Internet
Author: User
Tags python list

Python generates Digital Image Code sharing,

This article shares several pieces of Python code for generating digital images. For more information, see. The details are as follows:

Final Version

# -*- coding:utf-8 -*-from PIL import Image,ImageFont,ImageDraw,ImageFilterimport randomimport osimport timeclass Code(object):  def __init__(self, imgSize=(35,35),\    fontSize=25, bgColor=(255,)*4, fontColor=(0,0,0)):    self.imgSize = imgSize    self.fontSize = fontSize    self.bgColor = bgColor    self.fontColor = fontColor  def setFontSize(self, size):    self.fontSize = size;  def getDigit(self, digit):    return str(digit)  def getPannel(self):    pannel = Image.new('RGBA',self.imgSize,self.bgColor)    return pannel  def getFont(self, fontFile='./Arial.ttf'):    return ImageFont.truetype(fontFile, self.fontSize)  def getTextPos(self, digit, font):    text = self.getDigit(digit)    textWidth,textHeight = font.getsize(text);    imgWidth,imgHeight = self.imgSize    textPos = ((imgWidth-textWidth)/2, (imgHeight-textHeight)/2)    return textPos  def rotateImg(self,image,angle=0, expand=0):    rot = image.rotate(angle, expand)    fff = Image.new('RGBA',rot.size,self.bgColor)    image = Image.composite(rot, fff, rot)    return image  def createImg(self, digit, font, angle):    codeImg = Image.new('RGBA',self.imgSize,self.bgColor)    draw = ImageDraw.Draw(codeImg);    text = self.getDigit(digit)    textPos = self.getTextPos(digit, font)    draw.text(xy=textPos,text=text,fill=self.fontColor,font=font)    codeImg = self.rotateImg(codeImg,angle)    return codeImg  def saveImg(self, img, savePath, imgName):    img.save(savePath+'/'+imgName)def createPath(path):  if not os.path.exists(path):    os.makedirs(path)def createImages(code,rootPath='./images',digitList=range(10), fontSizeList=range(18,30),\  angleList=[(45,90),(-45,45),(-45,-90)]):  for index,angles in enumerate(angleList):    if index==0:      angleRange = '-90_-45'    elif index == 1:      angleRange = '-45_45'    else:      angleRange = '45_90'    anglepath = os.path.join(rootPath, angleRange)    createPath(anglepath)    for digit in digitList:      digitpath = os.path.join(anglepath, 'x'+str(digit))      createPath(digitpath)      for size in fontSizeList:        angle = round(random.uniform(angles[0], angles[1]),5)        code.setFontSize(size)        imgName = str(digit)+'_'+str(size)+'_'+str(angle)+'.jpg'        img = code.createImg(digit, code.getFont(),angle)        code.saveImg(img, digitpath, imgName)if __name__ == '__main__':  imagesPath = './images'  if os.path.exists(imagesPath):    os.system('rm -rf '+imagesPath)  os.mkdir(imagesPath)  code = Code()  for i in range(1000):    createImages(code)  # test ...  # code = Code()  # img = code.createImg(5,code.getFont(),0)  # code.saveImg(img, savePath, 'test.jpg')  # img.show()  print 'hello'
# -*- coding:utf-8 -*-from PIL import Image,ImageFont,ImageDraw,ImageFilterimport randomimport osclass Captcha(object):  def __init__(self,size=(20,24),fontSize=20):    self.font = ImageFont.truetype('./fonts/Arial.ttf',fontSize)    self.size = size    self.image = Image.new('RGBA',self.size,(255,)*4)    # self.texts = self.randNum(1)    self.text = ''  def rotate(self, angle):    # rot = self.image.rotate(random.randint(-10,10),expand=0)    rot = self.image.rotate(angle,expand=0)    fff = Image.new('RGBA',rot.size,(255,)*4)    self.image = Image.composite(rot,fff,rot)  def randColor(self):    self.fontColor = (random.randint(0,250),random.randint(0,250),random.randint(0,250))  # def randNum(self,bits):  #   return ''.join(str(random.randint(0,9)) for i in range(bits))  def setNum(self, num):    return num;  def write(self,text,x,y):    draw = ImageDraw.Draw(self.image)    draw.text((x,y),text,fill=self.fontColor,font=self.font)  def writeNum(self, num, angle):    x = 2    y = -2    self.text = num    self.fontColor = (0, 0, 0)    self.write(num, x, y)    self.rotate(angle)    return self.text    # character    # xplus = 15    # for text in self.texts:      # self.randColor()      # self.fontColor = (0, 0, 0)      # self.write(text, x, y)      # self.rotate(angle)      # self.rotate(random.randint(-10,10))      # x += xplus    # return self.texts  def save(self, save_path):    # self.image.save('captcha.jpg')    self.image.save(save_path)pic_root_path = './pic'if not os.path.exists(pic_root_path):  os.mkdir(pic_root_path)angles = [(45,90),(-45,45),(-90,-45)]for i in range(10):  pic_num_path = os.path.join(pic_root_path, 'pic'+str(i))  if not os.path.exists(pic_num_path):    os.mkdir(pic_num_path)  for angle_i in angles:    angle_name = str(angle_i[0])+'_'+str(angle_i[1])    pic_angle_path = os.path.join(pic_num_path, angle_name)    if not os.path.exists(pic_angle_path):      os.mkdir(pic_angle_path)    for angle in range(angle_i[0], angle_i[1]):      for fontsize in range(25,28):        img = Captcha(size=(20, 24), fontSize=fontsize)        num = img.writeNum(str(i), angle)        img_name = str(i)+'_'+str(fontsize)+'_'+str(angle)+'.bmp'        save_path = os.path.join(pic_angle_path, img_name)        img.save(save_path)  # img = Captcha()  # num = img.writeNum(str(i), random.randint(-90,-45))  # img_name = str(i)+'.jpg'  # pic_path = './pic'+str(i)  # if not os.path.exists(pic_path):  #   os.mkdir(pic_path)  # save_path = os.path.join(pic_path, img_name)  # save_path = os.path.join(pic_root_path, save_path)  # img.save(save_path)# img.image.show()# img.save()

Randomly generate a single digital image of various sizes and rotation angles

#-*-Coding: UTF-8-*-from PIL import Image, ImageFont, ImageDraw, ImageFilterimport randomimport osimport timeclass Captcha (object): def _ init _ (self, size = (20, 24), fontSize = 20): self. font = ImageFont. truetype ('. /fonts/Arial. ttf', fontSize) self. size = size self. image = Image. new ('rgba', self. size, (255,) * 4) self. text = ''def rotate (self, angle): rot = self. image. rotate (angle, expand = 0) fff = Image. new ('rgba', rot. size, (255,) * 4) self. image = Image. composite (rot, fff, rot) def randColor (self): self. fontColor = (random. randint (0,250), random. randint (0,250), random. randint (0,250) def setNum (self, num): return num; def write (self, text, x, y): draw = ImageDraw. draw (self. image) draw. text (x, y), text, fill = self. fontColor, font = self. font) def writeNum (self, num, angle): x = 2 y =-2 self. text = num self. fontColor = (0, 0, 0) self. write (num, x, y) self. rotate (angle) return self. text def save (self, save_path): # self. image = self. image. filter (ImageFilter. EDGE_ENHANCE_MORE) # filter, boundary enhancement self. image. save (save_path) pic_root_path = '. /pic 'If not OS. path. exists (pic_root_path): OS. mkdir (pic_root_path) angles = [(45, 90), (-45, 45), (-90,-45)] for I in range (10): pic_num_path = OS. path. join (pic_root_path, 'x' + str (I) if not OS. path. exists (pic_num_path): OS. mkdir (pic_num_path) for angle_ I in angles: angle_name = str (angle_ I [0]) + '_' + str (angle_ I [1]) pic_angle_path = OS. path. join (pic_num_path, angle_name) if not OS. path. exists (pic_angle_path): OS. mkdir (pic_angle_path) for fontsize in range (25,29): for j in range (2500): # Keep 5 decimal places angle = round (random. uniform (angle_ I [0], angle_ I [1]), 5) img = Captcha (size = (20, 24), fontSize = fontsize) num = img. writeNum (str (I), angle) img_name = comment 'save_path = OS. path. join (pic_angle_path, img_name) img. save (save_path)

Text Center

# -*- coding:utf-8 -*-from PIL import Image,ImageFont,ImageDraw,ImageFilterimport randomimport osimport timeimgWidth = 20imgHeight = 24fontSize = 28backGroundColor = (255,)*4fontColor = (0,)*3text = '0'font = ImageFont.truetype('./Arial.ttf', fontSize)codeimg = Image.new('RGBA',(imgWidth,imgHeight), backGroundColor)imagePath = './codes'if not os.path.exists(imagePath):  os.mkdir(imagePath)textWidth, textHeight = font.getsize(text)textLeft = (imgWidth-textWidth)/2textTop = (imgHeight-textHeight)/2draw = ImageDraw.Draw(codeimg)draw.text(xy=(textLeft,textTop),text=text,fill=fontColor,font=font)rot = codeimg.rotate(90,expand=0)codeimg.rotatefff = Image.new('RGBA', rot.size,backGroundColor)codeimg = Image.composite(rot, fff, rot)codeimg.show()# codeimg.save('./codes/test.jpg')

The above is all about Python's Digital Image Generation Code sharing. I hope it will be helpful to you. Welcome:Three methods for deleting the Python list: code sharing,Python file read/write and Exception Code exampleIf you have any questions, please feel free to leave a message.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.