› Foros › PC › Software libre
La Rosita escribió:Buenas tardes:
Necesito cambiar la resolución de unas 200 fotos, por que no me entran en un Cd. Y para 56MB que me sobran no voy a usar un segundo cd.
¿Alguien sabe de algún programa para cambiar la resolución de todas las fotos de golpe?
O alguna otra forma...
Hacerlo una a una es muy costoso.
Gracias con antelación.
Baek escribió:La Rosita escribió:Buenas tardes:
Necesito cambiar la resolución de unas 200 fotos, por que no me entran en un Cd. Y para 56MB que me sobran no voy a usar un segundo cd.
¿Alguien sabe de algún programa para cambiar la resolución de todas las fotos de golpe?
O alguna otra forma...
Hacerlo una a una es muy costoso.
Gracias con antelación.
Imagemagick + script a medida = solución.
La Rosita escribió:Buenas tardes:
Necesito cambiar la resolución de unas 200 fotos, por que no me entran en un Cd. Y para 56MB que me sobran no voy a usar un segundo cd.
¿Alguien sabe de algún programa para cambiar la resolución de todas las fotos de golpe?
O alguna otra forma...
Hacerlo una a una es muy costoso.
Gracias con antelación.
#!/usr/bin/env python
# -*- coding: latin-1 -*-
import gtk
import os, sys
import string
sys.path.insert(0, os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])),".."))
import Process
# VARIABLES POR DEFECTO
tamImg = 800
tamMin = 150
nombreMin = "p"
def ClickAceptar(widget):
archivos = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'].split("\n")
for archivo in archivos:
if archivo != "":
if os.path.isdir(archivo):
ProcesarDirectorio(archivo)
else:
ProcesarImagen(archivo)
Process.alert("El proceso ha finalizado satisfactoriamente")
gtk.main_quit()
def ProcesarDirectorio(directorio):
archivos = os.listdir(directorio)
for archivo in archivos:
archivo = directorio + "/" + archivo
if os.path.isdir(archivo):
ProcesarDirectorio(archivo)
else:
ProcesarImagen(archivo)
def ProcesarImagen(archivo):
if Process.getExtension(archivo) == "JPG" or Process.getExtension(archivo) == "PNG":
image = gtk.gdk.pixbuf_new_from_file( archivo )
intercambiar = False
if cbIntercambiar.get_active() and image.get_height()>image.get_width():
intercambiar = True
# creamos miniatura si hace falta
if cbMiniatura.get_active():
geo = ""
if cbPorcentajeMin.get_active():
geo = str(int(spinTamMin.get_value()))+"%"
else:
if intercambiar:
if rbTamAncho.get_active():
geo = "x"+str(int(spinTamMin.get_value()))
else:
geo = str(int(spinTamMin.get_value()))+"x"
else:
if rbTamAncho.get_active():
geo = str(int(spinTamMin.get_value()))+"x"
else:
geo = "x"+str(int(spinTamMin.get_value()))
Process.ProcessFileByArgument(
"convert -resize "+geo+" \""+archivo+"\" \""+entryNombre.get_text()+""+archivo+"\"")
# redimensionamos imagen
geo = ""
if cbPorcentaje.get_active():
geo = str(int(spinTam.get_value())) + "%"
else:
if intercambiar:
if rbTamAncho.get_active():
geo = "x"+str(int(spinTam.get_value()))
else:
geo = str(int(spinTam.get_value()))+"x"
else:
if rbTamAncho.get_active():
geo = str(int(spinTam.get_value()))+"x"
else:
geo = "x"+str(int(spinTam.get_value()))
Process.ProcessFileByArgument(
"convert -resize "+geo+" \""+archivo+"\" \""+archivo+"\"")
def ClickCancelar(widget):
gtk.main_quit()
def ReleasedCrearMiniatura(widget):
spinTamMin.set_sensitive(cbMiniatura.get_active())
cbPorcentajeMin.set_sensitive(cbMiniatura.get_active())
entryNombre.set_sensitive(cbMiniatura.get_active())
# PROGRAMA
if Process.verifyCommands("convert%ImageMagick")==False:
sys.exit()
w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_title("Redimensionar imágenes")
w.set_border_width(20)
w.connect("destroy", gtk.mainquit)
#l = gtk.Label(os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'])
table = gtk.Table(5, 3, False)
table.set_row_spacings(8)
table.set_col_spacings(8)
lAncho = gtk.Label("Tamaño:")
table.attach(lAncho, 0, 1, 0, 1)
adjTam = gtk.Adjustment(1.0, 1.0, 999999.0, 1.0, 5.0, 0.0)
spinTam = gtk.SpinButton(adjTam, 0, 0)
spinTam.set_value(tamImg)
table.attach(spinTam, 1, 2, 0, 1)
cbPorcentaje = gtk.CheckButton("%")
table.attach(cbPorcentaje, 2, 3, 0, 1)
lAlto = gtk.Label("Proporcional al:")
table.attach(lAlto, 0, 1, 1, 2)
boxTamRadio = gtk.HBox(False, 4)
boxTamRadio.set_border_width(4)
boxTamRadio.show()
rbTamAncho = gtk.RadioButton(None, "Ancho")
rbTamAncho.set_active(True)
rbTamAncho.show()
boxTamRadio.pack_start(rbTamAncho, True, True, 0)
rbTamAlto = gtk.RadioButton(rbTamAncho, "Alto")
rbTamAlto.show()
boxTamRadio.pack_start(rbTamAlto, True, True, 0)
table.attach(boxTamRadio, 1, 3, 1, 2)
cbIntercambiar = gtk.CheckButton("Intercambiar tamaño en fotos verticales")
cbIntercambiar.set_active(True);
table.attach(cbIntercambiar, 0, 3, 2, 3)
cbMiniatura = gtk.CheckButton("Crear minuatura")
cbMiniatura.connect("released", ReleasedCrearMiniatura)
frameMiniatura = gtk.Frame()
frameMiniatura.set_label_widget(cbMiniatura)
# tabla de la miniatura
tableMin = gtk.Table(2, 3, False)
tableMin.set_border_width(10)
tableMin.set_row_spacings(8)
tableMin.set_col_spacings(8)
lTamMin = gtk.Label("Tamaño:")
tableMin.attach(lTamMin, 0, 1, 0, 1)
adjTamMin = gtk.Adjustment(1.0, 1.0, 999999.0, 1.0, 5.0, 0.0)
spinTamMin = gtk.SpinButton(adjTamMin, 0, 0)
spinTamMin.set_value(tamMin)
spinTamMin.set_sensitive(False)
tableMin.attach(spinTamMin, 1, 2, 0, 1)
cbPorcentajeMin = gtk.CheckButton("%")
cbPorcentajeMin.set_sensitive(False)
tableMin.attach(cbPorcentajeMin, 2, 3, 0, 1)
lNombreMin = gtk.Label("Texto al principio:")
tableMin.attach(lNombreMin, 0, 1, 2, 3)
entryNombre = gtk.Entry()
entryNombre.set_text(nombreMin)
entryNombre.set_sensitive(False)
tableMin.attach(entryNombre, 1, 3, 2, 3)
frameMiniatura.add(tableMin)
table.attach(frameMiniatura, 0, 3, 3, 4)
# botones
aligBotones = gtk.Alignment(1.0, 0.0)
boxBotones = gtk.HBox(True, 4)
bAceptar = gtk.Button("Aceptar", gtk.STOCK_OK)
bAceptar.connect("clicked", ClickAceptar)
boxBotones.pack_start(bAceptar, False, False, 0)
bCancelar = gtk.Button("Cancelar", gtk.STOCK_CANCEL)
bCancelar.connect("clicked", ClickCancelar)
boxBotones.pack_start(bCancelar, False, False, 0)
aligBotones.add(boxBotones)
table.attach(aligBotones, 1, 2, 4, 5)
w.add(table)
w.show_all()
gtk.main()
/home/tuusuario/.gnome2/nautilus-scripts/