Ultima modificación: jueves, 28 de mayo de 2009
Necesitaba ripear unas 5000 imagenes en el curro, en cada una de ellos necesitaba pasarlo de TIFF a JPG y fijar el ancho a 800 y alto libre manteniendo aspect ratio.
Me he hecho este script cuyo uso simplemente es pasar todos las carpetas que vamos a trabajar como parametros. Por ejemplo:
Uso: ripearImagenes CARPETA1 CARPETA2 CARPETA3 … CARPETAN
Escribiendo ripearImagenes sin parametros es equivalente a pasar el directorio actual como primer parametro.
Simplemente gedit ripearImagenes y pasteamos, además podeis poneros el script en algún directorio «PATHeado» (evidentemente, esto ultimo es opcional xD):
#!/usr/bin/python # # :: Invasion Tux # :: Ultima modificacion : jueves, 28 de mayo de 2009 # :: Script realizado por makiolo (makiolo@gmail.com) (Licencia Creative Commons con reconocimiento) # :: Ultima version : https://blogricardo.wordpress.com/2009/05/15/script-para-ripear-imagenes-masivamente/ # :: Dependencias : python , convert # import os,sys,glob,subprocess,shutil ######### CONFIGURACION ############## SUFIJO = "_RIPEADO" DESTINO = ".png" ANCHO = 2000 FORMATOS_VALIDOS = ["jpg","gif","png","tif"] ###################################### def getExtension(fichero): posPunto = video.rfind(".") return fichero[posPunto+1:len(fichero)] def extensionEsValida(fichero): posPunto = video.rfind(".") if posPunto != -1: extension = getExtension(fichero) try: FORMATOS_VALIDOS.index(extension) return True except ValueError: return False else: return False def getNombreRipeado(fichero): return fichero+SUFIJO+DESTINO def getCarpetaRipeados( dir_inicial ): return "%s_RIPEADOS" % ( os.path.basename(dir_inicial) ) def existeRipeado(fichero): return os.path.exists(getNombreRipeado(fichero)) def ripear(fichero): ret = subprocess.call('convert "%s" -quiet -resize %d "%s"' % ( fichero , ANCHO , getNombreRipeado(fichero) ) , shell=True) return ret == 0 def ripearTodo( carpeta ): imagenes = [] for extension in FORMATOS_VALIDOS: imagenes += glob.glob("*."+extension) borradas = 0 copia = [] lenFinal = len(SUFIJO+DESTINO) for imagen in imagenes: if(imagen[-lenFinal:] != SUFIJO+DESTINO): if os.path.isfile(imagen): copia.append(imagen) else: os.remove( imagen ) borradas = borradas + 1 print "+ Borradas %d imagenes ripeadas" % (borradas) total = len(copia) print "+ Ripeando %d imagenes: " % total i = 1 for imagen in copia: print " - Ripeando %d de %d\r" % (i , total), sys.stdout.flush() if ripear(imagen): shutil.move( getNombreRipeado(imagen) , carpeta) else: print "Error ripeando %s. Posiblemente no sea una imagen." % (imagen) i+=1 def App(): try: if len(sys.argv) == 1: sys.argv.append(".") dir_inicial = os.getcwd() for parm in sys.argv: if parm != sys.argv[0]: if (os.path.isdir(parm)): carpeta = getCarpetaRipeados( dir_inicial ) if not os.path.exists(carpeta): os.mkdir(carpeta) parm = os.path.abspath( parm ) carpeta = os.path.abspath( carpeta ) os.chdir(parm) print "Trabajando %s" % parm ripearTodo( carpeta ) os.chdir( dir_inicial ) else: print '"%s" no es un directorio' % parm except KeyboardInterrupt: print "ancelado por el usuario" if __name__ == '__main__': App()
Filed under: comandos, Linux, programación, script, software libre |
Deja una respuesta