Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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'
Exemplo n.º 4
0
    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'