visrecall/WebInterface/Front-end/generate-experiment-files/generate_central_fixation_cross.py

40 lines
1.4 KiB
Python

from PIL import Image, ImageDraw, ImageColor, ImageFont
import matplotlib.pyplot as plt
import numpy as np
import json
import os
# FIXED parameters
text_color = ImageColor.getrgb("white")
font_type = "arial.ttf"
px_pt_ratio = 20/29 # according to our image dimensions, 29 point = 20 px
def pixel_to_point(num):
return int(num*(1/px_pt_ratio))
def save_fixation_cross(rootdir,image_width,image_height):
font_size = int(image_height*0.0278)
print('using font size: %d'%(font_size))
# Generate and save fixation cross image
img = Image.new('RGB', (image_width, image_height), (126, 126, 126))
d = ImageDraw.Draw(img)
try:
font = ImageFont.truetype(font_type, pixel_to_point(font_size)) # takes in point value
except OSError:
print("WARNING: using a different font because oculd not find %s on your computer" % font_type)
font = ImageFont.truetype("/usr/share/fonts/truetype/freefont/FreeSans.ttf", pixel_to_point(font_size))
d.text((image_width/2.0 - font_size, image_height/2.0 - font_size), '+', text_color, font)
filename = 'fixation-cross.jpg'
img.save(os.path.join(rootdir,filename))
print('Saved fixation cross image as %s'%(os.path.join(rootdir,filename)))
if __name__ == "__main__":
rootdir = './task_data'
image_width = 1920 # in pixel
image_height = 1080 # in pixel