-
Notifications
You must be signed in to change notification settings - Fork 0
/
encoder.py
79 lines (53 loc) · 2.07 KB
/
encoder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
from base import *
from Model_Encoder import *
conv_name=''
def encoder(conv_name):
lstfilesDCM=[] #empty list
lstfilesDCM.append(conv_name) #append is not actually necessary
m=lstfilesDCM[0] #used list to create multiple files uploader later
name=m[:-4]
name=name+".czb"
con_file=name
ds=pydicom.read_file('uploads/'+lstfilesDCM[0]) #Read the dicom file
pixel_array_numpy = ds.pixel_array # returns a NumPy array for uncompressed images
dimensions = ds.pixel_array.shape
image_height=ds.Rows #Extract required data of dicom files
image_width=ds.Columns
image_bit=ds.BitsAllocated
ds.PixelData=ds.pixel_array
image_pixel=ds.PixelData
q, w=image_pixel.shape
print q,w
print image_pixel
#converts data to binary
width=struct.pack('Q',image_width)
height=struct.pack('Q',image_height)
bit=struct.pack('B',image_bit)
pdata=image_pixel.tobytes()
stat=3
status=struct.pack('B',stat)
ident='CRAZY BITMAP '
ide=ident.encode('ASCII')
#write into file a new file
new_file=open('uploads/'+con_file,'wb')
new_file.write(ide)
new_file.write(status)
new_file.write(height)
new_file.write(width)
new_file.write(bit)
new_file.write(pdata)
new_file.close()
#f.close()
os.remove(os.path.join(app.config['UPLOADED_PATH'], conv_name))
#flash(con_file)
name_file=open('uploads/name.txt','w')
name_file.write(con_file)
name_file.close()
download()
def download():
name_file=open('uploads/name.txt','r')
conv_name=name_file.readline()
name_file.close()
return conv_name
if __name__ == '__main__':
encoder()