import sys
import os
import Image
def modifica(filename, watermarkname):
photo = Image.open(filename)
watermark = Image.open(watermarkname)
Pwidth = photo.size[0]
Pheight = photo.size[1]
Wwidth = watermark.size[0]
Wheight = watermark.size[1]
x = (Pwidth/2)-(Wwidth/2)
y = (Pheight/2)-(Wheight/2)
photo.paste(watermark, (x, y), watermark)
photo.save(filename.split(".")[0]+"_watermark.jpg")
if len(sys.argv) < 3:
print "Esempio d'uso: python watermark.py foto.jpg watermark.png"
sys.exit()
foto = os.path.abspath(sys.argv[1])
watermark = os.path.abspath(sys.argv[2])
if os.path.isdir(foto):
for file in os.listdir(foto):
modifica(foto+"/"+file, watermark)
else:
modifica(foto, watermark)
Sono 28 righe di codice abbastanza semplice da capire.
In livecode si può fare come puro script con:
on OpenCard
if $# <> 3 then
put "Esempio d'uso: livecode -ui watermark.livecode foto.jpg watermark.png"
quit 64 #command line usage error
end if
import paint from file $2
set the name of last image to watermark
if last char of $1 is "/" then
set the defaultFolder to $1
put files() into lista
else
put $1 into lista
end if
repeat for each line tFile in lista
applicaW tFile
end repeat
quit
end openCard
on applicaW tFile
import paint from file tFile
set the name of last image to foto
set the loc of image watermark to the loc of image foto
set itemdel to "."
put item 1 of tFile into tFile
export snapshot from rect (the rect of image foto) of this card to file ( tFile & "_watermark.jpg") as JPEG
delete image foto
end applicaW
Circa 27 righe. La gestione della posizione è più semplice in livecode, perchè la proprietà loc è il baricentro dell'oggetto e basta farli coincidere per mettere al centro di un'immagine la filigrana.
A sfavore del Python è il sistema di gestione dei blocchi di codice solo su indentazione, è un attimo fare degli errori. Al contrario in Livecode è l'indentazione è automatica, e i cicli sono racchiusi da delimitatori ben chiari tipo ON/END.
Voi che ne pensate?
Nessun commento:
Posta un commento