pubblicato Martedì 10 Marzo del 2009 alle 09:24.

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")
Attenzione: gli script sono pubblicati SOLO a scopo dimostrativo (didattico) e ASSOLUTAMENTE SENZA GARANZIA: l'autore nega qualsiasi responsabilità di danni riscontrabili a seguito del loro uso (mancato funzionamento, errori ed eventuale perdita di dati, etc). Gli script sono pubblicati con la licenza d'uso GNU General Public License, peraltro ottenibile al seguente link GNU/GPL.

Ultimo aggiornamento 06 Aprile 2006


powered by FreeFind
Il sito è una creazione di Maurizio... ed è pubblicato sotto una Licenza CC; esso non viene aggiornato
in maniera periodica, pertanto non può essere considerato un prodotto editoriale ai sensi della legge n. 62 del 7.03.2001.