azioni con gimp

Domandate qui se non riuscite ad installare i filtri o gli script, oppure se avete problemi legati alla creazione e modifica dei filtri. Qui si pongono le domande più tecniche.
fiore
Apprendista
Apprendista
Messaggi:21
Iscritto il:ven 18 giu 2004, 18:11
Località:Chivasso (To)
azioni con gimp

Messaggio da fiore » ven 18 giu 2004, 18:11

ho la necessità per lavoro di automatizzare una procedura ripetitiva con Gimp. Sono un fotografo e vorrei usere gimp al posto di photoshop x creare le tessere. Partendo da 1 immagine devo dimensionarla e montarne 5 copie su unapagina di un formato fisso. In photoshop con un azione ho risolto il problema ma vorrei poterlo fare anche con gimp.

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » sab 19 giu 2004, 10:56

beh potresti provare a vedere se riesci a fare qualcosa con Script-Fu :)
Non so se sai qualcosa a riguardo ma praticamente ti viene data la possibilità di scrivere una serie di azioni (anche in maniera abbastanza complessa) in un semplice file di testo, salvare il tutto con il nome nome.scm e metterlo dentro la cartella scripts dentro la cartella Gimp nella tua home directory (per vedere dove ti è stata creata questa cartella basta che guardi in File->Preferenze->Cartelle->Script).
Una volta messo lì dentro Gimp automaticamente la caricherà e ti darà la possibilità di accedervi dal menu Filtri abituale.

Cosa metterci dentro?
Le azioni che puoi usare sono accessibili facilmente dal PDB (il Database Procedurale di Gimp) dalla finestra degli strumenti Xtns->Browser DB.
Una volta dentro alla finestra del browser puoi eseguire una qualsiasi ricerca.

Facciamo un esempio più concreto.
Te hai bisogno all'inizio di prendere l'immagine e resizarla:
cerchiamo quindi "resize" nel PDB: la prima funzione della lista che ci restituisce è quello che fa il nostro caso:
gimp-image-resize
nella parte destra, una volta selezionata la funzione voluta, ci appare il nome della funzione, una descrizione sommaria, i parametri in ingresso (formali) e un aiuto un po' più ampio.
Ovviamente quello che non dici è se le nuove dimensioni sono fisse o se devono essere calcolate in base all'immagine... per essere aiutato sarebbe di grande aiuto se puoi spiegare passo passo cosa effettivamente in un paio di esempi concreti deve fare la tua immagine.

Chiaramente non è tutto qui... Quello che non ti ho detto è che script-fu si basa su Lisp un linguaggio di programmazione fatto a liste: i comandi sono semplicemente racchiusi in parentesi tonde, all'interno delle quali c'è una lista di comandi.
Per questo posso consigliarti di guardarti due tutorial un po' più specifici sul sito del GUG (http://gug.sunsite.dk) sullo scripting
Se hai più familiarità è possibile anche scrivere script in Perl o Phyton, ma se non hai alcuna familiarità direi che puoi tranquillamente usare Script-Fu.
Oltre a questo puoi sempre guardare gli Script-Fu che sono presenti nella installazione base di Gimp, per capire come funziona in esempi ancora più pratici, ma soprattutto funzionanti.

Una volta terminata la sequenza di comandi basta solo specificare dove far apparire nel menu il tuo nuovo script e registrare il tuo script presso il PDB (esempi specifici sono negli script già presenti in GIMP).

Chiaramente se tutto questo ti fa impazzire e non vuoi per nessuna ragione al mondo affrontare il problema o molte cose ti risultano ostiche più del dovuto, non ti preoccupare, posta pure i tuoi dubbi e perplessità e vedrai che sicuramente riusciremo ad ottenere quanto ti serve.
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

fiore
Apprendista
Apprendista
Messaggi:21
Iscritto il:ven 18 giu 2004, 18:11
Località:Chivasso (To)

Messaggio da fiore » lun 21 giu 2004, 16:31

Essendo un principiante non so nemmeno come fare per rispondere a chi è stato così gentile da darmi questo suggeriemnto. Purtroppo non penso di essere in grado di eseguire la procedura descritta per cui cerco di spiegare esattamente quello che mi servirebbe:
- parto da un'immagine di 18 mega che devo inquadrare manualmente
- dopo l'inquadratura e il taglio (che faccio manualmente perche ogni volta può essere diversa), devo ridurla a una immagine di 3,5 4,5 cm a 300 dpi.
- devo creare una pagina nel formato 21cm x 10 cm a 300 dpi
- selezionare l'mmagine iniziale e copiarla 5 volte sulla pagina creata prima
- chiaramente le 5 immagini devono eddere allineate a una giuida x facilitare il taglio successivo.

Questo è tutto: se qualcuno è in grado di crearmi uno script gli posso fornire un serie di tessere omaggio.

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » lun 21 giu 2004, 17:35

ok vediamo di partire passo passo per capire gli step procedurali di cui necessiterà lo script che andremo a creare:
per inquadrare cosa intendi? ritagliare l'immagine di partenza per ottenerne una più piccola?
le dimensioni a cui verrà ridimensionata l'immagine è forzata a 3,5x4,5 cm? oppure può subire un ritaglio successivo?
quindi "l'inquadratura" e il "ridimensionamento" è proporzionale?

immagino che queste specie di anteprime che crei sulla pagina di 21x10cm siano da mettere una di seguito all'altra... devono essere centrate verticalmente ed equamente distribuite orizzontalmente? (considerando orizzontale l'asse di lunghezza maggiore)

in che senso "taglio successivo" ? la guida dev'essere stampabile? (penso tu sappia che, come in photoshop, le guide non appaiono in stampa)

:)

Beh io conterei di farti capire come funziona la creazione dello script ottenendolo assieme passo passo così se hai bisogno in un futuro di creare un nuovo script che fa qualcosa di diverso sai dove mettere le mani e come girartelo in maniera basilare :)
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

lelia
Principiante
Principiante
Messaggi:7
Iscritto il:sab 13 mar 2004, 16:17

Messaggio da lelia » lun 21 giu 2004, 17:45

Fiore, non so se riesci a capire quello che ti sta dicendo Peach, ma una cosa è certa, lui sta tenendo a tutti noi una bellissima lezione sulla creazione degli script ( difficilissimo!) .Per chi ha voglia di imparare questa è una grandissima occasione
ciao Lelia.....

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » lun 21 giu 2004, 21:22

lelia ha scritto:creazione degli script ( difficilissimo!)
:lol:
dai Lelia, non è DIFFICILISSIMO!
per chi non l'ha mai fatto, come per qualsiasi cosa che richiede un po' di comprensione, risulta ostica di primo acchito... ma poi quando capisci come funzia è una bazzecola..
Posso darti ragione se si tratta di fare calcoli che nello specifico coinvolge tecniche proprie della programmazione, ma anche lì secondo me non è così difficile...
in ogni caso (anche se per utenze più avanzate) ho scritto un tutorial abbastanza comprensibile anche per chi non mastica programmazione sul sito del gug (http://gug.sunsite.dk/tutorials/thepeach1/).

Ma ripeto...

meglio procedere passo passo e lo script viene fuori da solo
8)
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

fiore
Apprendista
Apprendista
Messaggi:21
Iscritto il:ven 18 giu 2004, 18:11
Località:Chivasso (To)

Messaggio da fiore » mar 22 giu 2004, 15:33

Ritornando alle mie tessere voglio cercare di spiegare esattamente quali sono i vari step della procedura:

Si parte da un'immagine di 18 mega che inquadro e ridimensiono in modo manuale, perchè ogni ripresa è diversa per cui non è possibile eseguire una operazione automatica. L'immagine ottenuta sarà 3,5cm x 4,5 cm a 300 dpi
Da questo passaggio dovrebbe iniziare la procedura con i seguenti steps

-- selezionare tutta l'immagine
-- creare una pagina di 21 cm x 10 cm a 300 dpi
-- incollare 5 volte l'immagine sulla pagina avendo cura che le immagini siano allineate a 1 cm dal bordo superiore
-- unire i livelli

La procedura è tutta qui, dopo stamperò l'immagine con una stampante a sublimazione su un foglio A4

Spero di essere stato chiaro, aspetto con fiducia che qualcuno mi possa aiutare.

lelia
Principiante
Principiante
Messaggi:7
Iscritto il:sab 13 mar 2004, 16:17

Messaggio da lelia » ven 25 giu 2004, 10:59

non ti posso aiutare, perchè non sono ancora in grado di fare una cosa del genere pero' ho trovato delle ottime informazioni a questo indirizzo
http://www.klaban.torun.pl/help/script-fu-tutorial
certo, ci vuole tempo...
ciao Lelia

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » ven 25 giu 2004, 13:16

abbi pazienza che lo script è quasi fatto ma necessita un piccolo debug e in questi giorni sono oberato dal lavoro e dallo studio...
abbi fede appena posso posto tutto
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

Avatar utente
kain
Aiutante di Wilber
Aiutante di Wilber
Messaggi:137
Iscritto il:gio 24 giu 2004, 19:49
Contatta:

Messaggio da kain » ven 25 giu 2004, 23:16

ehm... non è per fare il noioso.. ma non ci sta nulla in italiano? io non lo non mastico bene l'inglese^^'

lelia
Principiante
Principiante
Messaggi:7
Iscritto il:sab 13 mar 2004, 16:17

Messaggio da lelia » sab 26 giu 2004, 8:55

se fai una ricerca con Google trovi parecchie indicazioni con la possibilita di traduzione, forse anche l'indirizzo sopra citato

fiore
Apprendista
Apprendista
Messaggi:21
Iscritto il:ven 18 giu 2004, 18:11
Località:Chivasso (To)

Messaggio da fiore » ven 2 lug 2004, 16:40

Non vorrei essere inopportuno e nemmeno troppo insistente, ma devo continuare a sperare di ottenere un aiuto in mmerito alle cosidette azioni con Gimp ?.......
Un sentito grazie

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » lun 5 lug 2004, 13:29

hehehe eccomi :P
contro ogni aspettativa ho ultimato in un momento di follia lo script, scusa per il ritardo, ma i tempi che posso dedicarmi al pc in questo periodo stanno diminiuendo drasticamente...
ma arriviamo al dunque :)

Piccola premessa:

Scheme (il linguaggio di programmazione per gli script-fu) è un linguaggio basato sulle liste.
Ogni operazione è una sequenza di elementi in una lista nella forma

Codice: Seleziona tutto

(funzione argomento1 argomento2 ...)
quindi se volessi fare una somma devo fare qualcosa tipo:

Codice: Seleziona tutto

(+ 4 5)
non solo, le funzioni generalmente ritornano un valore, per poter accedere a questo valore devo accedere al primo elemento della lista. In Scheme per fare questo ci sono due funzioni specifiche: car che accede al primo elemento della lista e cdr che accede al resto degli elementi escluso il primo!
Carino, no?
quindi se ho una funzione particolare che mi ritorna un valore:

Codice: Seleziona tutto

(car (gimp-image-height Image))
così riesco ad ottenere il valore restituito dalla funzione gimp-image-height.

I commenti sono scrivibili su linee singole e sono preceduti da un "punto e virgola" (;) e non sono interpretati da GIMP.

Questo è, genericamente parlando, come funziona Scheme, giusto per capire cosa ho scritto.. se ci sono dubbi basta domandare :)

Per gli argomenti singoli che ogni funzione interna di GIMP accetta in ingresso e i valori restituiti guarda il PDB da: <Toolbox>->Xtns->Browser DB...


NOTA: ho dovuto spezzare il post in due che sembrava nn me lo prendesse così lungo!!!
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » lun 5 lug 2004, 13:32

script-fu-thumbnalizer by The Peach

ora spiego passo passo che fa lo script
lo script funziona esclusivamente con immagini di 413px (45mm @ 300dpi) di larghezza e 531px (35mm @ 300dpi) di altezza.
L'immgine finale ha dimensioni 2480x1181px (la dimensione a 300dpi che mi avevi detto ti serviva)
L'immagine sorgente si chiama thumbImage di dimensioni thumbImage-w*thumbImage-h.
L'immagine finale si chiama stripImage di dimensioni stripImage-w*stripImage-h.
Lo script come vedrai prende in ingresso l'immagine e il layer selezionato al momento di lanciare lo script (questi due parametri sono obbligatori)
All'inizio definisco queste variabili tramite la funzione let*

Codice: Seleziona tutto

(define (script-fu-thumbnalizer thumbImage drawable)
	(let* (
		; 413px = 45mm @ 300dpi
		(thumbImage-w (car (gimp-image-width thumbImage)))
		; 531px = 35mm @ 300dpi
		(thumbImage-h (car (gimp-image-height thumbImage)))
		; Larghezza della striscia (stripImage)
		(stripImage-w 2480) 
		; Altezza della striscia
		(stripImage-h 1181)
		)


	; copio l'immagine sorgente indipendentemente dal layer selezionato
	(script-fu-copy-visible thumbImage drawable)
	
	; creo la nuova immagine su cui andrò ad incollare la thumb copiata precedentemente
	(set! stripImage (car (gimp-image-new stripImage-w stripImage-h 0)))
	; creo un livello di base bianco
	(set! baseLayer (car (gimp-layer-new stripImage stripImage-w stripImage-h 0 "Base" 100 0)))
	(gimp-image-add-layer stripImage baseLayer 0)
	; lo riempio di bianco come sfondo
	(gimp-drawable-fill baseLayer 2)
fin qua mi pare abbastanza comprensibile: non ho fatto altro che creare la nuova immagine e dargli uno sfondo bianco di base.
A gimp-image-new deve seguire obbligatoriamente la creazione di un nuovo livello con gimp-layer-new e associare il livello all'immagine con gimp-image-add-layer.

Ora devo fare in summa i seguenti passi per incollare thumbImage alla nuova immagine:

Codice: Seleziona tutto

	; creo il primo livello dove incollerò la prima immagine
	(set! thumb (car (gimp-layer-new stripImage thumbImage-w thumbImage-h 1 "thumb" 100 0)))
	(gimp-image-add-layer stripImage thumb 0)
	
	; incollo l'immagine sul nuovo livello e ancoro la selezione fluttuante così ottenuta
	(set! tempfloat (car (gimp-edit-paste thumb 0)))
	(gimp-floating-sel-anchor tempfloat)
	
	; riposiziono il nuovo layer selection
	; 10mm @ 300 = 118px
	(gimp-layer-translate thumb1 distanza-w 118)
Ora il problema è che questi passi abbastanza semplici ti fanno vedere il procedimento per un singolo livello, ma noi ne abbiamo bisogno per 5!!! non solo, mi sono posto anche il dubbio che la traslazione del nuovo livello (che di default il suo angolo in alto a sx è in posizione (0,0) ) dev'essere posizionato a distanza adeguata gli uni dagli altri...
Per questa ragione ho introdotto un ciclo while (per spiegazioni vedere il mio tutorial su IF-WHILE su http://gug.sunsite.dk ) e calcolando la distanza dei singoli livelli come (thumbImage-w+spacer)+spacer (spacer è la distanza che ho calcolato essere ottimale tra le thumbs, cioè di 69px), ma si capisce meglio se ti scrivo il ciclo:

Codice: Seleziona tutto

	(let* (
		(counter 0)
		(spacer 69))
		(while (< counter 5)
			; creo un nuovo livello
			(set! thumb (car (gimp-layer-new stripImage thumbImage-w thumbImage-h 1 "thumb" 100 0)))
			; aggiungo il livello (passo obbligatorio)
			(gimp-image-add-layer stripImage thumb 0)
			; incollo thumImage copiata con script-fu-copy-visible creando un livello float
			(set! tempfloat (car (gimp-edit-paste thumb 0)))
			; ancoro il tempfloat al livello creato
			(gimp-floating-sel-anchor tempfloat)
			; sposto il livello nella posizione specificata
			(gimp-layer-translate thumb (+ spacer (* counter (+ thumbImage-w spacer))) 118)
			; incremento il counter
			(set! counter (+ counter 1))
		)
	)
Detto questo ora non resta altro che creare una nuova finestra per la stripImage e aggiornarne la visione.

Codice: Seleziona tutto

	; aggiorno l'immagine - fine dello script
	(gimp-display-new stripImage)
	(gimp-displays-flush)
ecco fatto!!! 8)
dopo di questo bisogna registrare lo script nel PDB per renderla disponibile ad essere chiamata dall'utente oltre che essere ricercata.

Lo script lo puoi scaricare da QUI

sappimi dire se è tutto ok!
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

Peach
Aiutante di Wilber
Aiutante di Wilber
Messaggi:114
Iscritto il:sab 22 mag 2004, 21:08
Contatta:

Messaggio da Peach » lun 5 lug 2004, 15:07

OPS!!! :roll:

dimenticavo! il file una volta scaricato dev'essere messo nella cartella utente di GIMP degli script (tra le preferenze vedi il percorso specifico)
Se lo fai con GIMP aperto occorre che aggiorni gli script da <Toolbox>->Xtns->Script-Fu->Aggiorna gli Script
dopodichè potrai applicare il tuo script alla tua immagine di partenza da:
<Image>->Script-Fu->Utilità->Thumbnalizer...

enjoy :)
The Peach
In the beginning, there was Wilber, Wilber the gimp. The graphic was without form and void, and darkness was upon the face of the desktop, and the Spirit of Wilber was moving over the face of the bitstream.

Rispondi