Non ho resistito…
ho messo da parte il mio scriptino bash basilare per passare ad uno script “più meglio assai di più” (forse) in python, che fa la stessa cosa, ma anche di più in quanto è ricorsivo.
Le immagini (per evitare spechi di banda e di spazio) sono ridotte, croppate ed aggiunto il bordino bianco che fa tanto anni 80!
#!/usr/bin/python3
import PythonMagick as Magick
from ftplib import FTP_TLS
import sys, os
import os.path
from pathlib import Path
def resize_and_crop(directory, photo):
"""
Resize and crop image
:param filename
"""
img = Magick.Image(directory+'/'+photo)
img.crop("4200X2800+20+20")
img.resize("1600x1000");
img.enhance() #full compression
img.borderColor("white") #full compression
img.border("20x20+0+0") #full compression
img.magick('JPG')
img.write('/tmp/'+photo)
if len(sys.argv) < 2:
print("Devi passare il nome della directory da inviare allo script!")
print("Sto uscendo...")
sys.exit()
nome_script, directory_immagini = sys.argv
rootfs="/home/user/Immagini/"+directory_immagini
destdir="/public_html/photo/galleries/"+directory_immagini
if (os.path.isdir(rootfs) == False):
print("Devi esistere il nome della directory da inviare allo script!")
print("Sto uscendo...")
sys.exit()
ftps = FTP_TLS('ftp.sito.com')
ftps.set_debuglevel(1)
ftps.set_pasv(True)
ftps.connect(port=21, timeout=80)
ftps.login('userid', 'password')
ftps.prot_p()
ftps.ccc()
try:
ftps.cwd(destdir)
except Exception:
ftps.mkd(destdir)
for (dir, _, files) in os.walk(rootfs):
newdir=destdir+dir[len(rootfs):len(dir)]
try:
ftps.cwd(newdir)
except Exception:
ftps.mkd(newdir)
ftps.cwd(newdir)
print('Created new dir on remote')
for f in files:
head, tail = os.path.split(f)
print(newdir)
ftps.cwd(newdir)
try:
print(ftps.size(f))
except Exception:
resize_and_crop(dir, f)
file = open(os.path.join('/tmp', f),'rb')
cur_dir=(os.path.abspath(os.curdir))
os.chdir("/tmp")
ftps.set_debuglevel(1)
ftps.storbinary('STOR '+f, file,blocksize=8192)
ftps.set_debuglevel(0)
os.chdir(cur_dir)
file.close()
os.remove(os.path.join('/tmp', f))
ftps.close()
E uno script quick and dirty, ma sono interessanti gli utilizzi della libraria PythonMagick che consente di utilizzare da python i pacchetti grafici di ImageMagick e l’utilizzo di FTPS (come già riportato in un post precedente) per l’invio delle foto in sicurezza.. o quasi.
Per PythonMagic ho avuto alcuni problemi in quanto i sorgenti sono fermi alla version 2 di python, ma per fortuna sul repository di Ubuntu era disponibile il pacchetto python3-pythonmagick che mi ha tolto dall’impasse.
Cercando sulla rete NON HO TROVATO alcun documento che mi fornisse indicazioni su come utilizzare la libreria PythonMagick. Tuttavia seguendo diverse indicazioni che ho trovato, mi sono basato sugli esempi e note di Magick++ la controparte in C++ di Python l’utilizzo delle librerie di ImageMagick.
