53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
import fnmatch
|
||
|
import os
|
||
|
|
||
|
# sudo pip install Wand
|
||
|
from wand.image import Image
|
||
|
# sudo pip install http://pypi.python.org/packages/source/h/hurry.filesize/hurry.filesize-0.9.tar.gz
|
||
|
from hurry.filesize import size
|
||
|
|
||
|
|
||
|
# constants
|
||
|
PATH = '/../../../..'
|
||
|
PATTERN = '*.jpg'
|
||
|
|
||
|
|
||
|
def get_image_file_names(filepath, pattern):
|
||
|
matches = []
|
||
|
if os.path.exists(filepath):
|
||
|
for root, dirnames, filenames in os.walk(filepath):
|
||
|
for filename in fnmatch.filter(filenames, pattern):
|
||
|
matches.append(os.path.join(root, filename)) # full path
|
||
|
if matches:
|
||
|
print "Found {} files, with a total file size of {}.".format(len(matches), get_total_size(matches))
|
||
|
return matches
|
||
|
else:
|
||
|
print "No files found."
|
||
|
else:
|
||
|
print "Sorry that path does not exist. Try again."
|
||
|
|
||
|
|
||
|
def get_total_size(list_of_image_names):
|
||
|
total_size = 0
|
||
|
for image_name in list_of_image_names:
|
||
|
total_size += os.path.getsize(image_name)
|
||
|
return size(total_size)
|
||
|
|
||
|
|
||
|
def resize_images(list_of_image_names):
|
||
|
print "Optimizing ... "
|
||
|
for index, image_name in enumerate(list_of_image_names):
|
||
|
with open(image_name) as f:
|
||
|
image_binary = f.read()
|
||
|
with Image(blob=image_binary) as img:
|
||
|
if img.height >= 600:
|
||
|
img.transform(resize='x600')
|
||
|
img.save(filename=image_name)
|
||
|
print "Optimization complete."
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
all_images = get_image_file_names(PATH, PATTERN)
|
||
|
resize_images(all_images)
|
||
|
get_image_file_names(PATH, PATTERN)
|