106 lines
3.6 KiB
Python
106 lines
3.6 KiB
Python
import os
|
|
import sys
|
|
import zipfile
|
|
import urllib.request
|
|
import tarfile
|
|
|
|
inputFolder = 'full-res-files'
|
|
outputFolder = 'web-files'
|
|
highResOutput = 'high-res'
|
|
magickHome = ""
|
|
dyldLibrary = ""
|
|
|
|
def clearScreen():
|
|
os.system('cls' if os.name == 'nt' else 'clear')
|
|
|
|
def convertFilesInInput():
|
|
#rename files with spaces
|
|
print("Renaming any files in the input folder that have a space and replacing that with a dash.")
|
|
for filename in os.listdir(inputFolder):
|
|
#os.path.join needed to include path when renaming
|
|
os.rename(os.path.join(inputFolder,filename), os.path.join(inputFolder,filename.replace(' ', '-')))
|
|
|
|
for filename in os.listdir(inputFolder):
|
|
print("Converting " + filename + " for web.")
|
|
convertImage("1500","50",filename,getOutputPath())
|
|
|
|
print("Converting " + filename + " for delivery.")
|
|
# 6000x can give you a 20 inch image for print. Printing is 300dpi so 6000px/300dpi = 20inch, but if someone wants a 20x16 your smaller edge needs to be 4800px
|
|
convertImage("8000","50",filename,getOutputPathHighRes())
|
|
|
|
def convertImage(pixels,quality,filename,outputPath):
|
|
#os.path.splitext(filename)[0] gets rid of file extension if you want a different extension
|
|
getProfileCmd = getImagemagickExe() + " " + getInputPath() + filename + " profile.icc"
|
|
# pixels and profile need double quotes around them
|
|
convertCmd = getImagemagickExe() + " " + getInputPath() + filename + " -resize \"" + pixels + "x\" -quality " + quality + " -depth 24 -strip -profile \"profile.icc\" " + outputPath + filename
|
|
if(os.name == "nt"):
|
|
os.system(getProfileCmd)
|
|
os.system(convertCmd)
|
|
else:
|
|
os.system(magickHome + dyldLibrary + getProfileCmd)
|
|
os.system(magickHome + dyldLibrary + convertCmd)
|
|
os.remove("profile.icc")
|
|
|
|
|
|
def downloadImagemagick():
|
|
if not os.path.isfile(getImagemagickExe()):
|
|
print("ImageMagick does not exist. Downloading now...")
|
|
if(os.name == "nt"):
|
|
urllib.request.urlretrieve ("https://imagemagick.org/download/binaries/ImageMagick-7.0.8-15-portable-Q16-x64.zip", "imagemagick.zip")
|
|
zipfile.ZipFile("imagemagick.zip","r").extractall(getImagemagickPath())
|
|
os.remove("imagemagick.zip")
|
|
elif(sys.platform == "darwin"):
|
|
urllib.request.urlretrieve ("https://imagemagick.org/download/binaries/ImageMagick-x86_64-apple-darwin17.7.0.tar.gz", "imagemagick.tar.gz")
|
|
tarfile.open("imagemagick.tar.gz","r:gz").extractall("imagemagick/")
|
|
os.remove("imagemagick.tar.gz")
|
|
os.rename("imagemagick/ImageMagick-7.0.8", getImagemagickPath())
|
|
|
|
else:
|
|
print("ImageMagick already downloaded.")
|
|
|
|
def getImagemagickPath():
|
|
if(os.name == "nt"):
|
|
return "imagemagick\\windows\\"
|
|
elif(sys.platform == "darwin"):
|
|
return "imagemagick/osx/"
|
|
else:
|
|
returnErrorAndExit("Your os is not supported. Try using Windows or OSX")
|
|
|
|
def getImagemagickExe():
|
|
if(os.name == "nt"):
|
|
return getImagemagickPath() + "convert.exe"
|
|
elif(sys.platform == "darwin"):
|
|
currentDir = os.path.dirname(os.path.realpath(__file__))
|
|
global magickHome
|
|
magickHome = "export MAGICK_HOME=" + currentDir + "/" + getImagemagickPath() + ";"
|
|
global dyldLibrary
|
|
dyldLibrary = "export DYLD_LIBRARY_PATH=$MAGICK_HOME/lib;"
|
|
return getImagemagickPath() + "bin/convert"
|
|
else:
|
|
returnErrorAndExit("Your os is not supported. Try using Windows or OSX")
|
|
|
|
def getOutputPath():
|
|
if(os.name == "nt"):
|
|
return outputFolder + "\\"
|
|
else:
|
|
return outputFolder + "/"
|
|
|
|
def getOutputPathHighRes():
|
|
if(os.name == "nt"):
|
|
return highResOutput + "\\"
|
|
else:
|
|
return highResOutput + "/"
|
|
|
|
def getInputPath():
|
|
if(os.name == "nt"):
|
|
return inputFolder + "\\"
|
|
else:
|
|
return inputFolder + "/"
|
|
|
|
def returnErrorAndExit(message):
|
|
input(message)
|
|
sys.exit()
|
|
|
|
downloadImagemagick()
|
|
convertFilesInInput()
|