ahserver_g/ahserver/imgThumb.py
2019-11-27 18:56:02 +08:00

36 lines
881 B
Python

from PIL import Image
from io import BytesIO
def imageThumb(imgfilepath,width=None,height=None):
im = Image.open(imgfilepath)
mode = im.mode
if mode not in ('L', 'RGB'):
if mode == 'RGBA':
alpha = im.split()[3]
bgmask = alpha.point(lambda x: 255-x)
im = im.convert('RGB')
# paste(color, box, mask)
im.paste((255,255,255), None, bgmask)
else:
im = im.convert('RGB')
w, h = im.size
if not width and not height:
width = 256
if width:
height = int(float(width) * float(h) / float(w))
else:
width = int(float(height) * float(w) / float(h))
thumb = im.resize((width,height),Image.ANTIALIAS)
f = BytesIO()
thumb.save(f,format='jpeg',quality=60)
im.close()
v = f.getvalue()
with open('thumb.jpg','wb') as x:
x.write(v)
return v
if __name__ == '__main__':
imageThumb("/home/ymq/media/pictures/2019-08/IMG_20190804_113014.jpg", width=256)