Last active
April 28, 2018 19:24
-
-
Save Julian-Nash/814f9511a4a617ccdfb822e4f701c342 to your computer and use it in GitHub Desktop.
Python 3. Convert bulk images from any file type to PNG with progress bar and save in new directory
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| arg=$1 | |
| red='\033[1;31m' | |
| yellow='\033[1;33m' | |
| cyan='\033[1;36m' | |
| purple='\033[1;35m' | |
| nl='\n' | |
| nc='\033[0m' | |
| build_env(){ | |
| printf '\n' | |
| echo -e "${purple}Resize & rename script starting...${nc}" | |
| cp ~/tools/resize_to_png/resize_to_png.py . | |
| printf '\n' | |
| echo -e "${purple}copying python script to current directory...${nc}" | |
| printf '\n' | |
| echo -e "${purple}Building temporary environment...${nc}" | |
| pipenv --three | |
| pipenv install Pillow progress | |
| pipenv shell | |
| printf '\n' | |
| echo -e "${purple}Environment build complete. Run 'resize run' to continue${nc}" | |
| printf '\n' | |
| } | |
| resize(){ | |
| python resize_to_png.py | |
| echo -e "${purple}Operation complete, tearing down pipenv and removing temporary files...${nc}" | |
| pipenv --rm | |
| rm Pipfile Pipfile.lock resize_to_png.py | |
| exit | |
| } | |
| help(){ | |
| echo -e "${cyan}--------------------------------------------------------------------------${nc}" | |
| echo -e "${cyan}| resize converts .jpg and .tif files to .png and resizes to 1920 x 1080 |${nc}" | |
| echo -e "${cyan}--------------------------------------------------------------------------${nc}" | |
| printf '\n' | |
| echo -e "Commands:" | |
| printf '\n' | |
| echo -e "${red}build${nc} Builds a temporary local environment and installs dependencies" | |
| echo -e "${yellow}run${nc} Executes the script and removes the temporary environment" | |
| } | |
| if [ $# -eq 0 ]; then | |
| help | |
| elif [ $arg == "build" ]; then | |
| build_env | |
| elif [ $arg == "run" ]; then | |
| resize | |
| else | |
| echo -e "${red}Unknown argument: ${arg}${nc}" | |
| fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os, sys | |
| from PIL import Image | |
| from progress.bar import Bar | |
| width = 1080 | |
| height = 800 | |
| root = os.getcwd() | |
| save_dir_name = "edits" | |
| save_dir = root + "/" + save_dir_name | |
| size = (width, height) | |
| img_types = (".JPG", ".TIF") | |
| images = [f for f in os.listdir(os.curdir) if f.endswith(img_types)] | |
| if len(images) == 0: | |
| print("No images found in this directory") | |
| exit() | |
| else: | |
| bar = Bar('Processing', max=len(images)) | |
| print("Processing {} images".format(len(images))) | |
| os.mkdir(save_dir) | |
| for image in images: | |
| (name, extension) = image.split(".") | |
| im = Image.open(image) | |
| im.thumbnail(size, Image.ANTIALIAS) | |
| os.chdir(save_dir) | |
| im.save(name + ".png") | |
| os.chdir(root) | |
| bar.next() | |
| bar.finish() | |
| print("Job finished. Processed {} images".format(len(images))) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add
resize_to_png.pyin~/tools/resize_to_pngAdd
resize.shin~/tools/resize_to_pngAdd
alias resize="~/tools/resize_to_png/resize.sh"in~/.bashrcExecute
resize buildfollowed byresize runin the directory containing the images you want to resizeScript will create temp pipenv and install dependencies -> create a new directory called edits -> resize images and convert to .png -> removes pipenv
run
exitto leave the pipenv shell after the script has completedNot perfect but gets the job done