Bunch of scripts that make life easier on command line
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 lines
2.2 KiB

#! /usr/bin/env python3
from PIL import Image, ImageDraw, ImageFont
import argparse
import sys
def main():
parser = argparse.ArgumentParser(description='Converts ASCII file to image image (Good for converting radare2 graphs)')
parser.add_argument('X', metavar='X Coord', default = 0, type=int, nargs='?',help='x coordinate for image')
parser.add_argument('Y', metavar='Y Coord', default = 0, type=int, nargs='?',help='y coordinate for image')
parser.add_argument('--ascii', metavar='ASCII File', default = "", nargs='?',help='ASCII file input')
parser.add_argument('--img', metavar='IMG Output File', default = "", nargs='?',help='IMG file output')
args = parser.parse_args()
fontfile="/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf"
fontSize = 18
xMultiplier = fontSize * 0.65
yMultiplier = fontSize * 1.15
startX = 10
startY = 10
imgX = args.X
imgY = args.Y
asciiX=0
asciiY=0
fullString=""
asciiLines=[]
asciiLinesLength=[]
if args.ascii!="":
#open file to read number of lines & line length
with open(args.ascii) as f:
for line in f:
asciiLines.append(line)
asciiLinesLength.append(len(line))
#reopen to read as whole
with open(args.ascii) as f:
fullString=f.read()
else:
fullString = sys.stdin.read()
asciiLines = fullString.split("\n")
for line in asciiLines:
asciiLinesLength.append(len(line))
#get text X & Y coords
asciiY = len(asciiLines)
asciiX = max(asciiLinesLength)
#setup imgX and imgY if they are not set by user
if imgX==0:
imgX = int(asciiX * xMultiplier + (2 * startX))
if imgY==0:
imgY = int(asciiY * yMultiplier + (2 * startY))
# make a blank image for the text
txt = Image.new('RGB', (imgX, imgY), (255,255,255))
# get a font
fnt = ImageFont.truetype(fontfile, fontSize)
# get a drawing context
d = ImageDraw.Draw(txt)
# draw text, full opacity
d.text((startX,startY), fullString, font=fnt, fill=(0,0,0))
if args.img=="":
txt.show()
else:
txt.save(args.img)
if __name__ == "__main__":
main()