Autor Tema: Ayuda con script-fu.  (Leído 6908 veces)

kurtsik

  • Consolidad@
  • ****
  • Mensajes: 179
    • kurtsik
Ayuda con script-fu.
« on: 13 ago 2007, 10:37 am »
Aupa.


Estoy haciendo un script-fu bastante tonto y simple para redimensionar fotos y colocarlas dentro de un lienzo de unas dimensiones determinadas. En principio no tiene ninguna complicacion pero hay algo que no estoy viendo por que no consigo que funcione.

Este es el codigo:

Código: [Seleccionar]
(define (kdenlive img drawable)

(set! sizeX 720) ;Ancho de la imagen.
(set! sizeY 576) ;Alto de la imagen.

; Variables varias.
; Dimensiones de la imagen final.
(set! final_sizeX 720)
(set! final_sizeY 576)
(set! offset_X 0)
(set! offset_Y 0)

; Setea el color de fondo:
(set! negro '(0 0 0))
(set! blanco  '(255 255 255))
(set! color negro)


(gimp-image-undo-group-start img)
 

; Conseguir dimensiones.
(set! initial_sizeX  (car (gimp-image-width img) ))
(set! initial_sizeY  (car (gimp-image-height img) ))


; Determinar si es horizontal o vertical.
(if
(> initial_sizeX initial_sizeY)
(set! final_sizeY (/ (*  initial_sizeY final_sizeX) initial_sizeX))
(set! offset_X 0)
(set! offset_Y (/ (- sizeY final_sizeY) 2))
)

(if
(< initial_sizeX initial_sizeY)
(set! final_sizeX (/ (* initial_sizeX final_sizeY) initial_sizeY ))
(set! offset_X (/ (- sizeX final_sizeX) 2))
(set! offset_Y 0)
)




; Paso 1 - redimensionar
(gimp-image-scale img final_sizeX final_sizeY)



; Paso 2 - crear el fondo.
(set! kapaBerria (car (gimp-layer-new img final_sizeX final_sizeY 0 "fondo" 100 0)))
(gimp-image-add-layer img kapaBerria 1)


(gimp-layer-resize kapaBerria sizeX sizeY offset_X offset_Y)
(gimp-image-resize-to-layers img)

(gimp-context-set-foreground color)     ; Setear el color frontal.
(gimp-edit-fill kapaBerria 0)   ; Rellenar de color frontal.










; Paso 3 - acoplar imagen
;(gimp-image-flatten img)

; Paso 4 - enfocar.
;(script-fu-smart-sharpening img drawable 0.50 0.50 0.50)

(gimp-image-undo-group-end img)
(gimp-displays-flush)

)

; Registrar el script.
(script-fu-register "kdenlive"
                    "<Image>/Script-Fu/Photo/Kdenlive"
                    "Integra las fotos dentro de un lienzo de color \
                     blanco o negro, para poder usar las imagenes en \
                     Kdenlive sin que las deforme al redimensionar."
                    "kurtsik"
                    "GNU-GPL"
                    "2007/08/05 - v1.0"
                    ""
                    SF-IMAGE "Image" 0
                    SF-DRAWABLE "Drawable" 0
)

Exactamente lo que no funciona es el calculo del offset que tendra la capa nueva.

Podeis darme alguna pista?
Kurtsik
~~~ Hormarik gabeko mundu batean, nork behar ditu "leihoak"?? ~~~

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda con script-fu.
« Respuesta #1 on: 13 ago 2007, 11:11 am »
Buenas,

así por encima que va siendo hora de comer...  :)o

Creo que el cálculo del offset está bien. He hecho unas simulaciones "en papel" y parece correcto.

¿Podrías dar más datos? Definir exactamente "no funciona" (qué valores te da), cómo es el resultado que aparece, algún pantallazo...

Saludos,
Colegota
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

kurtsik

  • Consolidad@
  • ****
  • Mensajes: 179
    • kurtsik
Re: Ayuda con script-fu.
« Respuesta #2 on: 13 ago 2007, 12:26 pm »
Aupa Colegota.

Si, este es el resultado del script:



http://www.kurtsik.org/tmp/kdenlive.JPG
« Última Modificación: 13 ago 2007, 12:29 pm por kurtsik »
Kurtsik
~~~ Hormarik gabeko mundu batean, nork behar ditu "leihoak"?? ~~~

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda con script-fu.
« Respuesta #3 on: 13 ago 2007, 16:36 pm »
Buenas,

creo que me debes unas "cervezas"  :chin: porque me he pasado media tarde hasta que he dado con ello. Y es que no había programado ni script-fu ni scheme en mi vida. Y al principio creía que era un problema de script-fu y estaba mirando las funciones, pero no. Es de la sintaxis del "if". Al final he ido a parar a esta página de referencia de Scheme y como se puede ver ahí, la sintaxis es:

Código: [Seleccionar]
(if test-expression
    then-branch
    else-branch)

De forma que en

Código: [Seleccionar]
(if
(> initial_sizeX initial_sizeY)
(set! final_sizeY (/ (*  initial_sizeY final_sizeX) initial_sizeX))
(set! offset_X 0)
(set! offset_Y (/ (- sizeY final_sizeY) 2))
)

(set! final_sizeY (/ (*  initial_sizeY final_sizeX) initial_sizeX)) hace de "rama if" y no se si el resto o solo la siguiente hacen de "rama else". Vamos que se ejecuta solo la primera línea.

Para lo que tú querías hay que hacer un bloque con begin y sus paréntesis así:

Código: [Seleccionar]
(if
(> initial_sizeX initial_sizeY)
(begin
(set! final_sizeY (/ (*  initial_sizeY final_sizeX) initial_sizeX))
(set! offset_X 0)
(set! offset_Y (/ (- sizeY final_sizeY) 2))
)
)

Al final pongo el código completo simplemente "apañado", pero lo ideal sería ponerlo en plan elegante con una sola pregunta o Redy te reñirá.  :)o  ;-D Pero eso te lo dejo para ti.

Sobre lo de que me lo pagues con cervezas...  :chin: he aquí las "cervezas" que quiero (que por ello me he liado la manta, no te vayas a creer): ¿Pones imágenes en Kdenlive? Es que a mi me deja "añadir" clips de vídeo y audio pero imágenes...  :? ¿Por un casual estás tratando de hacer presentaciones de fotos en DVD? Si es así creo que no habré perdido la tarde...  }:-)

Saludos,
Colegota
PD Ah, sí, el script completo:

Código: [Seleccionar]
(define (kdenlive img drawable)

(set! sizeX 720) ;Ancho de la imagen.
(set! sizeY 576) ;Alto de la imagen.

; Variables varias.
; Dimensiones de la imagen final.
(set! final_sizeX 720)
(set! final_sizeY 576)
(set! offset_X 0)
(set! offset_Y 0)

; Setea el color de fondo:
(set! negro '(0 0 0))
(set! blanco  '(255 255 255))
(set! color negro)


(gimp-image-undo-group-start img)
 

; Conseguir dimensiones.
(set! initial_sizeX  (car (gimp-image-width img) ))
(set! initial_sizeY  (car (gimp-image-height img) ))


; Determinar si es horizontal o vertical.
(if
(> initial_sizeX initial_sizeY)
(begin
(set! final_sizeY (/ (*  initial_sizeY final_sizeX) initial_sizeX))
(set! offset_X 0)
(set! offset_Y (/ (- sizeY final_sizeY) 2))
)
)

(if
(< initial_sizeX initial_sizeY)
(begin
(set! final_sizeX (/ (* initial_sizeX final_sizeY) initial_sizeY ))
(set! offset_X (/ (- sizeX final_sizeX) 2))
(set! offset_Y 0)
)
)




; Paso 1 - redimensionar
(gimp-image-scale img final_sizeX final_sizeY)



; Paso 2 - crear el fondo.
(set! kapaBerria (car (gimp-layer-new img final_sizeX final_sizeY 0 "fondo" 100 0)))
(gimp-image-add-layer img kapaBerria 1)


(gimp-layer-resize kapaBerria sizeX sizeY offset_X offset_Y)
(gimp-image-resize-to-layers img)

(gimp-context-set-foreground color)     ; Setear el color frontal.
(gimp-edit-fill kapaBerria 0)   ; Rellenar de color frontal.










; Paso 3 - acoplar imagen
;(gimp-image-flatten img)

; Paso 4 - enfocar.
;(script-fu-smart-sharpening img drawable 0.50 0.50 0.50)

(gimp-image-undo-group-end img)
(gimp-displays-flush)

)

; Registrar el script.
(script-fu-register "kdenlive"
                    "<Image>/Script-Fu/Photo/Kdenlive"
                    "Integra las fotos dentro de un lienzo de color \
                     blanco o negro, para poder usar las imagenes en \
                     Kdenlive sin que las deforme al redimensionar."
                    "kurtsik"
                    "GNU-GPL"
                    "2007/08/05 - v1.0"
                    ""
                    SF-IMAGE "Image" 0
                    SF-DRAWABLE "Drawable" 0
)
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

kurtsik

  • Consolidad@
  • ****
  • Mensajes: 179
    • kurtsik
Re: Ayuda con script-fu.
« Respuesta #4 on: 13 ago 2007, 17:33 pm »
Muchas gracias!!!!!!! :yahoo: :yahoo: :yahoo: :yahoo: :yahoo: :yahoo: :yahoo:

Te debo por lo menos 25 cervezas :-)

No sabes la vueltas que he dado con este asunto, ya no sabia que probar ni que cambiar....

Lo que me preguntas es exactamente eso, es para añadir imagnes al kdenlive, si quieres un manual echale una mirada a esto:


http://www.kurtsik.org/blog/?p=131

Ahi ves como añadir fotos y una paranoya del otro dia.


Si tienes alguna duda no dudes en preguntarme, si me la se te respondo  @)
Kurtsik
~~~ Hormarik gabeko mundu batean, nork behar ditu "leihoak"?? ~~~

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda con script-fu.
« Respuesta #5 on: 13 ago 2007, 20:36 pm »
Buenas,

¡qué bruto soy! ni se me había ocurrido que las opciones estarían en "Crear clip". Incluso tiene un "Crear presentación de diapositivas" que te la genera a partir de una carpeta, aunque no tengo claro si se podrán poner transiciones. Bueno, muchas gracias por el manual. :)

Mis intenciones, como tal vez hayas leído en los enlaces, van por ponerles voz a las fotos y luego crear una presentación para DVD con la voz y música de fondo. Con Kdenlive creo que podría grabar las "voces" por un lado y luego que lo mezclase con las fotos redimensionadas al tamaño de los audios y poner una banda sonora de fondo. Aunque para el sonido tal vez de más juego audacity y luego mezclar ya veremos.

En cuanto al script en sí, hay dos cosas que no tengo muy claro. ¿has leído que se puede hacer que kdenlive haga el redimensionamiento por tí? (con el custom al renderizar). A lo mejor es que no es muy bueno... En el otro lado ¿no sería mejor usar Imagemagick para que procesara muchas imágenes de vez en lugar del script que lo hace una a una? Puedes adaptarte este de Redy para poner bordes simplificándolo bastante.

Veo que tenemos gustos similares. Nos leeremos a menudo. :)

Saludos,
Colegota
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]

redy

  • Moderador
  • Bimilenari@
  • *****
  • Mensajes: 2897
  • Gnudista
    • Esteropes El Cíclope
Re: Ayuda con script-fu.
« Respuesta #6 on: 13 ago 2007, 21:25 pm »
lo ideal sería ponerlo en plan elegante con una sola pregunta o Redy te reñirá.

Yo en scheme ni quito ni pongo rey, si fuese en bash todavía podría meter baza... Por cierto yo eso que creo que pretendeis, que es poner una foto en un lienzo de un tamaño fijo, rescalándola para que quepa pero sin deformarla lo haría en bash+imagemagick...

Cita
¿Por un casual estás tratando de hacer presentaciones de fotos en DVD? Si es así creo que no habré perdido la tarde...  }:-)


A parte de q-dvdauthor. dvd-styler, y algunos de ese estilo que son simples del todo, había uno hecho en gambas http://slcreator.sourceforge.net/ que tenía muy buena pinta, el rollo de gambas es que tienes que tener los últimos runtimes siempre para que las cosas funcionen bien. Javielinux http://www.javielinux.com/ tenía algo en python para hacer slideshows.

Usar un programa de edición de vídeo para eso puede que sea una solución interesante sobre todo por las posibilidades que estos nos brindan en cuanto a efectos para transiciones. Yo usaría kino porque es el que conozco, pero me da la impresión de que aún cuando el producto final quede mejor acabado el trabajo es mayor usando un programa de este tipo.

Creo que con kino sería sencillo porque dispone de un filtro para importar desde ficheros que permite convertir a vídeo un mónton de fotos de un plumazo lo único que tienen que llamarse algo como foto-0001.jpg, foto-002.jpg ... foto-0234.jpg pero eso con gqview se renombra en un plis-plas.

« Última Modificación: 28 ago 2007, 08:18 am por redy »
Admiro a la gente que sabe contar historias solamente con sus fotos, porque en el fondo las fotos son como los chistes; si tienes que explicarlas es que no son buenas...


kurtsik

  • Consolidad@
  • ****
  • Mensajes: 179
    • kurtsik
Re: Ayuda con script-fu.
« Respuesta #7 on: 14 ago 2007, 04:49 am »
Aupa.

El problema del kdenlive es que cuando cargas una imagen la ajusta a la proporcion del video, imaginaos en las verticales los estropicios que hace.
La idea de hacerlo para gimp es automatizar el procesado de una carpeta, que haga un retoque basico (niveles, nitidez, ...) y que las redimensione adecuadamente.

Por cierto, las pruebas que he hecho con kdenlive esta bien, te permite hacer algo rapido y bastante curioso pero estoy mirando cinelerra y es una pasada.
Kurtsik
~~~ Hormarik gabeko mundu batean, nork behar ditu "leihoak"?? ~~~

Colegota

  • Palizas oficial
  • *
  • Mensajes: 8188
  • ¡Me faltan carretes!
    • ¡Me faltan carretes!
Re: Ayuda con script-fu.
« Respuesta #8 on: 14 ago 2007, 08:19 am »
Buenas,

El problema del kdenlive es que cuando cargas una imagen la ajusta a la proporcion del video, imaginaos en las verticales los estropicios que hace.
La idea de hacerlo para gimp es automatizar el procesado de una carpeta, que haga un retoque basico (niveles, nitidez, ...) y que las redimensione adecuadamente.

Hasta ahora no había hecho ninguna prueba con fotos verticales, pero es cierto. Aunque en la previsualización lo pone bien, en la exportación lo hace mal.
Pero insisto en que para proceso por lotes es preferible ImageMagick, que además tiene cosas ya preparadas como lo de darle un -resize 720x576 y él solo te va a adaptar la imagen al mayor de esos lados. Luego tienes que centrarla, pero también es fácil. Además, creo que el resultado sería mejor que con el gimp-layer-resize donde no especificas el método de cambio de tamaño.

Por cierto, las pruebas que he hecho con kdenlive esta bien, te permite hacer algo rapido y bastante curioso pero estoy mirando cinelerra y es una pasada.

Como comentaba en el mensaje enlazado, lo que me gustó de kdenlive es su sencillez. Lo que no me apetece es para hacer algunas cosillas tener que aprender un montón sobre edición de vídeo. Seguro que conseguiría cosas mejores, pero conociéndome, o lo puedo hacer rápido o se me queda a medias.
Kino tenía buena pinta, y seguramente Cinelerra también. Pero se me escapan.
Con Kdenlive, para comentar los vídeos con audio combinando con Audacity ya visteis lo sencillo que era. Y ahora para las diapos, puedo grabar un audio con el comentario en Audacity, cargarlo en Kdenlive, añadir la foto y darle la duración del audio. Ponerle la transición y después una banda sonora a todo. Si ManSlide funcionase lo haría más sencillo puesto que incluso tiene la posibilidad de añadirle el audio desde micro a la imagen, pero a mi de momento no me va (me va tan lento que es imposible).

De todas formas, si vais publicando cosas sobre Kino o Cinelerra prometo leerlas y probarlas. :)

Saludos,
Colegota
PD Ah, Gambas no me gusta porque si algo odio en este mundo es Visual Basic y todo lo que me lo recuerde.
[Canon EOS 50 40D (sin diapos ni nada)] [Escáner Minolta DSE 5400] [Vuescan] [El GIMP] [Galería] [Página de Viajes]