Come è facilmente intuibile, in questo periodo sto dedicando i miei spazi di tempo libero extra allo studio del python, alla programmazione.
Tra ieri ed oggi sono riuscito a "convertire" lo script gimageconvert nel suddetto linguaggio, e la cosa più interessante è che inizio ad addentrarmi nel linguaggio realizzando scritti più complessi.
Questo script ha una particolarità rispetto al fratello maggiore in Bash: in ogni singola sessione è possibile convertire file di formati diversi in un singolo specifico formato, per esempio: selezionati due file di formato diverso come .jpg e .gif, dopo aver avviato lo script per la conversione in .png, esso tranquillamente processerà la richiesta ottenendo due immagini dello stesso formato.
Infine vorrei ricordare che questo è un G-script e pertanto consiglio di usarlo come tale, anche se da riga di comando non dovrebbero esserci particolari problemi.
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
# AUTHOR: Maurizio di NuvoleSparse
#
# License: GNU General Public version 2 or any later version.
# This program comes with ABSOLUTELY NO WARRANTY; for details
# see the COPYING file or visit "http://www.gnu.org/licenses/gpl.html".
# This is free software, and you are welcome to redistribute it under
# certain conditions. See the GPL license for details.
#
# Dependence:
# ImageMagick
# python
# zenity
import os
from sys import argv, exit
from string import join
from re import compile, match
from commands import getoutput, getstatusoutput
def warningmsg(image, format):
"""Apre il file '/tmp/gimageconvert.log' ed inserisce un\
messaggio di avviso
"""
if os.path.isfile('/tmp/gimageconvert.log') and\
os.path.getsize('/tmp/gimageconvert.log') != 0:
file = open('/tmp/gimageconvert.log', 'a')
else:
file = open('/tmp/gimageconvert.log', 'w')
file.write('ATTENZIONE!\nNon è possibile convertire il file '\
+image+' nello stesso formato "'+format+'" di appartenenza. :-(\n' )
file.close()
def main():
count3 = 0
while True:
format_out = getstatusoutput('zenity --list --radiolist\
--title="gimageconvert" --text="Seleziona il formato in cui convertire."\
--column=Selez. --column=formato false png false jpg false gif')
if format_out[0] == 0 and format_out[1] == '':
os.system('zenity --title="gimageconvert" --error\
--title="Attenzione" --text="Seleziona almeno un formato."')
count3 = count3 + 1
if count3 == 3:
os.system('zenity --title="gimageconvert"\
--error --title="Attenzione"\
--text="Odio girare in tondo! (Grrrrr)\nAddio! :-["')
exit(1)
elif format_out[0] == 256:
exit(0)
else:
break
quality = str(getoutput('zenity --scale --min-value=0\
--max-value=100 --value=95 --step=1 --title="gimageconvert"\
--text="Scegli al qualità dell\'immagine tra 0 e 100:"'))
directory = os.path.basename(argv[0])
if not os.path.isdir(directory):
try:
os.mkdir(directory)
except OSError, detail:
detail == '[Errno 17] File exists'
pass
count = 1
while count < len(argv):
name = join(os.path.basename(argv[count]).split('.')[:-1], '.')
if format_out[1] in ('png'):
if\
compile('[pP][nN][gG]').match(argv[count].split('.')[-1]):
warningmsg(argv[count], format_out[1])
count = count + 1
continue
if format_out[1] in ('jpg'):
if\
compile('[jJ][pP][gG]').match(argv[count].split('.')[-1])\
or compile('[jJ][pP][eE][gG]').match(argv[count].split('.')[-1]):
warningmsg(argv[count], format_out[1])
count = count + 1
continue
if format_out[1] in ('gif'):
if\
compile('[gG][iI][fF]').match(argv[count].split('.')[-1]):
warningmsg(argv[count], format_out[1])
count = count + 1
continue
count2 = 2
while\
os.path.isfile(os.getcwd()+'/'+directory+'/'+name+'.'+format_out[1]):
name = name+'_'+str(count2)
count2 = count2 + 1
os.system('convert -quality '+quality+' "'+argv[count]+\
'" "'+os.getcwd()+'/'+directory+'/'+name+'.'+format_out[1]+'"\
2>>/tmp/gimageconvert.log | zenity --progress --title="gimageconvert" \
--text="'+argv[count]+' in '+name+'.'+format_out[1]+'" --auto-close --auto-kill')
count = count + 1
if len(argv[1:]) == 0:
os.system('zenity --title="Attenzione - gimageconvert" --error\
--text="Seleziona almeno un file."')
main()
if os.path.isfile("/tmp/gimageconvert.log") and \
os.path.getsize("/tmp/gimageconvert.log") != 0:
os.system("cat /tmp/gimageconvert.log | zenity \
--title='Errore - gimageconvert' --text-info")
os.remove("/tmp/gimageconvert.log")
Ultimo aggiornamento 06 Aprile 2006