-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcomplexjpeg.py
executable file
·41 lines (34 loc) · 951 Bytes
/
complexjpeg.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
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''simulating simplejpeg behaviour where it is not available'''
import traceback
try:
from scipy.misc import imsave, imread
except ImportError:
try:
from skimage.io import imsave, imread
except ImportError:
traceback.print_exc()
try:
from imageio import imsave, imread
except ImportError:
traceback.print_exc()
import io
import numpy as np
def is_jpeg(data):
return data[:2] == b'\xFF\xD8' and data[-2:] == b'\xFF\xD9'
def encode_jpeg(image_array, quality=75):
jpeg = io.BytesIO()
imsave(jpeg, image_array, 'jpeg')
jpeg.seek(0)
jpeg = jpeg.read()
#jpeg = np.fromstring(jpeg, dtype='uint8')
return jpeg
def decode_jpeg(data):
jpeg = io.BytesIO(data)
image_array = imread(jpeg)
return image_array
def decode_jpeg_header(data):
'''
returns height, width, colorspace, color subsampling
'''