def render(self): bg = self.spotter.renderIm().convert('RGBA') self.im = self.initImageWithRotationScaleLeakDown(bg) self.im = self.filterImageWithInkLeak(self.im) _util.saveImage(self.im, fullpath=(self.pathEx)) return self.filenameEx
def renderWithFontBackground(self, fontName, background): self.formatter.reloadFont(fontName) bg = _util.stretchBackground(background, self.formatter) self.im = self.initImageWithRotationScaleLeakDown(bg) self.im = self.filterImageWithInkLeak(self.im) _util.saveImage(self.im, fullpath=(self.pathEx)) return self.filenameEx
def printWtRotNScl(self, leakdDeg): bg = self.spotter.renderIm().convert('RGBA') self.draw = ImageDraw.Draw(bg) lineOriginY = self.formatter.marginTop lineOriginX = self.formatter.marginLeft boxOriginX = lineOriginX boxOriginY = lineOriginY leakVerOffset = 10 for line in textwrap.wrap(self.text, width=self.formatter.char_num_per_line): line = line.replace(' ', '') boxOriginX = lineOriginX for char in line: box = self.formatter.font.getsize(char) charWidth = box[0] charHeight = box[1] charIm = _util.getTransparentImage(charWidth, charHeight) charDr = ImageDraw.Draw(charIm) charDr.text((0,-10), char, self.formatter.textColor, font=self.formatter.font) # Crop / Ink leak down offset = self.formatter.font.getoffset(char) cropPos = _util.getCropPos(box, offset, leakdDeg) pastePos = _util.getPastePos(box, offset, leakVerOffset) cropped = charIm.crop(cropPos) charIm.paste(cropped, pastePos) # Rotate and scale scaleW = _util.randomfWith(1.0,1.2) scaleH = _util.randomfWith(1.0,1.2) charIm = charIm.rotate(0, expand=1).resize((int(charWidth), int(charHeight))) bg.paste(charIm, (boxOriginX, boxOriginY), charIm) boxOriginX += charWidth boxOriginY += self.formatter.lineHeight _util.saveImage(bg, fullpath=(self.path+'_lkg'+'_lkd' + '.png')) return 'created/' + self.filename + '_lkg' + '_lkd' + '.png'
def drawImage(self): lineOffsetY = self.formatter.marginTop lineOffsetX = self.formatter.marginLeft for line in textwrap.wrap(self.text, width=self.formatter.char_num_per_line): # line = line.replace(' ', '') self.draw.text((lineOffsetX, lineOffsetY), line, self.formatter.textColor, font=self.formatter.font) charFinalOffsetX = lineOffsetX charFinalOffsetY = lineOffsetY for char in line: if not char.isspace(): charFinalOffsetY = lineOffsetY # reset last value charSize = self.formatter.font.getsize(char) charWidth = charSize[0] charHeight = charSize[1] charSelfOffset = self.formatter.font.getoffset(char) charSelfOffsetX = charSelfOffset[0] charSelfOffsetY = charSelfOffset[1] charFinalOffsetX += charSelfOffsetX charFinalOffsetY += charSelfOffsetY charHeight = charHeight - charSelfOffset[1] if self.debug: # draw rect self.draw.rectangle(((charFinalOffsetX,charFinalOffsetY), (charFinalOffsetX+charWidth, charFinalOffsetY+charHeight)), outline=self.formatter.outlineColor) self.output.append(char + ' ' + str(charFinalOffsetX) + ' ' + # left str(_util.convertY(charFinalOffsetY+charHeight, _util.size_training)) + ' ' + # bottom str(charFinalOffsetX+charWidth) + ' ' + # right str(_util.convertY(charFinalOffsetY, _util.size_training)) + ' ' + # top str(0)) # page charFinalOffsetX += charWidth lineOffsetY += self.formatter.lineHeight # save image ts = time.time() tstr = datetime.datetime.fromtimestamp(ts).strftime('%Y_%m_%d-%H_%M_%S') if _util.saveImage(self.im, name='image', folder='created', tstr=tstr): # write to box # self.writeBox(folderPath=self.pathCreated, imageName='image', tstr=tstr, output=self.output) _util.writeToBox('image', tstr, self.output) # write to text # self.writeText(folderPath=self.pathCreated, imageName='image', tstr=tstr, text=self.text) _util.writeToText('image', tstr, self.text) return 'created/image' + tstr + '.png'