diff --git a/For-developers-only/2-Colour-converter.py b/For-developers-only/2-Colour-converter.py new file mode 100644 index 0000000..76dbd8a --- /dev/null +++ b/For-developers-only/2-Colour-converter.py @@ -0,0 +1,104 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import glob, os, errno +from PIL import Image +import PIL.ImageOps + +""" +Python converter for converting png, jpeg and bmp to usable .bmp files which +can be used by the E-Paper display. Currently, any image will be converted +to pure white and pure black pixels, without any shades of grey, just as the +displays expects them to be. + +Tested and confired to work + +Copyright by Ace-Laboratory +""" +#--------------only change the following two lines-----------------# +input_folder = '/home/pi/conversion/input/' +output_folder = '/home/pi/conversion/output/' +#-----------------no need to change anything below----------------# + +os.chdir(input_folder) + +""" Creating lists with filenames first""" + +pngs = [] +for files in glob.glob("*.png"): + print('found this png: '+ os.path.splitext(os.path.basename(files))[0]) + pngs.append(os.path.splitext(os.path.basename(files))[0]) + +bmps = [] +for files in glob.glob("*.bmp"): + print('found this bmp: ' files) + bmps.append(files) + +jpegs= [] +for files in glob.glob("*.jpeg"): + print('found this jpeg: '+ os.path.splitext(os.path.basename(files))[0]) + jpegs.append(os.path.splitext(os.path.basename(files))[0]) + +print('converting the images now') + + +"""Some variables first. It's required for reducing colours""" +thresh = 126 # any value below 127 works. +fn = lambda x : 255 if x > thresh else 0 + +""" Conversion is done in two steps: +1) Converting the file from .png or .jpeg .bmp to a greyscale .bmp +2) Inverting the colours and rotating the image 90° anticlockwise +""" + + +""" Step 1 conversion for png files""" +if not os.path.exists(input_folder+'pngs/'): + print('temporary png folder does not exist, creating now...') + os.makedirs(input_folder+'pngs/') + +print("attempting to convert pngs now...") +for files in pngs: + png=Image.open(input_folder+files+".png") + png.load() + background = Image.new("RGB", png.size, (255, 255, 255)) #removing alpha channel + background.paste(png, mask=png.split()[3]) #removing alpha channel + background.convert('L').point(fn, mode='1').save((input_folder+'pngs/'+files+'.bmp'), 'BMP', quality=90) + +""" Step 2 conversion for png files""" +png_bmp = [] +os.chdir(input_folder+'pngs/') +for files in glob.glob("*.bmp"): + png_bmp.append(files) +for files in png_bmp: + (PIL.ImageOps.invert((Image.open(input_folder+'pngs/'+files).rotate(-90, expand=True)).convert('L'))).save(output_folder+files) +print("All png files have been converted.") + + +os.chdir(input_folder) + +""" Step 1 conversion for jpeg files""" +if not os.path.exists(input_folder+'jpegs/'): + print('temporary jpeg folder does not exist, creating now...') + os.makedirs(input_folder+'jpegs/') + +print("attempting to convert jpeg now...") + +for files in jpegs: + (Image.open(input_folder+files+".jpeg").convert('L').point(fn, mode='1').save((input_folder+'jpegs/'+files+".bmp"), 'BMP', quality=90)) + +""" Step 2 conversion for jpeg files""" + +jpeg_bmp = [] +os.chdir(input_folder+'jpegs/') +for files in glob.glob("*.bmp"): + print('These :'+files) + jpeg_bmp.append(files) +for files in jpeg_bmp: + (PIL.ImageOps.invert((Image.open(input_folder+'jpegs/'+files).rotate(-90, expand=True)).convert('L'))).save(output_folder+files) + + +""" Step 1 & 2 conversion for bmp files""" +for files in bmps: + PIL.ImageOps.invert(Image.open(input_folder+files+".bmp").convert('L').point(fn, mode='1')).save((output_folder+files), 'BMP', quality=90) #(PIL.ImageOps.invert((Image.open(input_folder+files).rotate(-90, expand=True)).convert('L'))).save(output_folder+files) + +print('All done')