import os import subprocess from PIL import ImageFile # pip install python-resize-image from resizeimage import resizeimage def resize_image(img, width=None, height=None, quality=72, filepath=""): """ given an image object, size, and filepath resize the image, then save it , size, and filepath resize the image, then save it at the filepath """ base_path = os.path.dirname(filepath) if not os.path.isdir(base_path): os.makedirs(base_path) if width and height: newimg = resizeimage.resize_cover(img, [width, height]) if width and not height: newimg = resizeimage.resize_width(img, width) if height and not width: newimg = resizeimage.resize_height(img, height) ImageFile.MAXBLOCK = img.size[0] * img.size[1] * 4 newimg.save(filepath, newimg.format, quality=quality) subprocess.call(["jpegoptim", "%s" % filepath])