from PIL import Image;
import numpy as np
import ctypes
filename = input('Ender image name: ');
filename += ".png";
#file opening
try:
im = Image.open(filename);
except FileNotFoundError:
print('file not found, please try again');
input();
exit();
#getting size
size = im.size;
# getting image as array
a = np.asarray(im);
result = [];
def conv32_16(r , g , b):
"""function get r, g , b as int and return appropriate 16int"""
b = int( b / 8 ); # >> 3
b = b << 11;
g = int( g / 4 ); # >> 2
g = g << 5;
r = int( r / 8 ); # >> 3
temp1 = b + g + r;
# swap bytes order
temp2 = temp1 >> 8;
tenp3 = temp1 << 8;
temp1 = temp2 + tenp3;
# rrrrr gggggg bbbbb
# (<<11) (<<5) (<<0)
return ctypes.c_int16( temp1 );
OutFile = filename.split(".");
OutFile[1] = "bin";
filename1 = ".".join(OutFile);
f_obj = open(filename1, 'wb');
# writing to file
for i in list(range(0 , size[1])):
for j in list(range(0 , size[0])):
temp = a[i][j];
f_obj.write(conv32_16(temp[2] , temp[1] , temp[0]));
f_obj.close();
print('saved as ' + filename1);
input();