Newsgroup: it.comp.os.linux.software
Titolo: Gimp: "montaggio" automatico delle immagini

Salve,
nel mio lavoro (programmatore web) mi capita spesso di dover fare dei 
pulsanti con rollover. I grafici mi passano le due immagini del pulsante, 
e io uso la tecnica dello spostamento del background-position nei css.
Il problema e` che mi tocca "montare" a mano queste due immagini per farne 
una sola, con il pulsante normale in alto e quello alternativo in basso.
Mi chiedevo se c'e` un plugin per Gimp (meglio, cosi` poi posso 
controllare i parametri per il salvataggio) o uno script che usi gd o 
imagemagick che mi faccia la stessa cosa in modo automatico.
Giusto ieri l'ho dovuto fare per 20 bottoni e stavo per sclerare... :)
Grazie.
Bye.

 imagemagick che mi faccia la stessa cosa in modo automatico.
http://www.imagemagick.org/Usage/montage/
ciao
	maxx

 una sola, con il pulsante normale in alto e quello alternativo in basso.
nel mio precedente lavoro era una cosa abbastnza all'ordine del giorno,
questo tipo di manipolazione delle immagini.
Io usavo felicemente imlib2 (
http://docs.enlightenment.org/api/imlib2/html/
)
Non farti spaventare dal fatto che è in C, per quello che devi farci te
sono davvero poche isctruzioni.
ti crei un eseguibile che prende come argomenti le due immagini di
ingresso ed il nome di quella in uscita, poi lo scripti con quel che ti
pare, ed il gioco è fatto.
ciao

 pare, ed il gioco è fatto.
ho dato un occhio ai vecchi lavori, quste le iustruzioni che dovebbero
bastare per fare quanto chiedi:
imlib_load_image_immediately (leggi le due immagini)
imlib_image_get_width
imlib_image_get_height -> calcoli w e h complessive
imlib_create_image -> crei un'immagine vuota con le w e h calcolate al
passo precedente
imlib_blend_image_onto_image -> incolli ognuna delle due caricate su
quella creata
imlib_context_set_image-> associati alla immagine le prossime chiamate a
funzione
imlib_save_image -> salvi l'immagine corrente (quella sulla quale hai
chiamao la funzione precedente)

 isctruzioni.
Grazie a tutti (anche per le risposte via email).
Preferivo trovare qualcosa di gia` pronto, e credo che vedro` un po' la 
documentazione di montage, piuttosto che farmi un software ad hoc e 
rischiare che mi salti fuori un bug proprio quando sono di fretta. :)
Se ne avro` tempo magari mi vedro` come fare un python-fu per gimp. A 
volte mi capita di dovermi tagliuzzare da solo le due immagini, e riuscire 
a fare tutto da li` mi farebbe comodo.
Bye.

 rischiare che mi salti fuori un bug proprio quando sono di fretta. :)
salve , ieri sera oer curiosità mi sono messo a spulciare nei vecchi
sorgenti, e ne ho trovato uno che fa cose molti simili a quello che chiedi.
Già che c'ero l'ho adattato alla meglio per fargli fare il montaggio, e
sul mio pc funziona bene.
Oltretutto visto che fa esattamente e solo quella cosa li, scheggia di
brutto :)
strippato sono 4k di eseguibile, io te lo incollo, se lo vuoi provare..
per compilarlo (una volta installate le Imlib2)
gcc programma.c -o programma -O2 -g -lImlib2
#include <stdio.h>
#include <string.h>
#include <utils.h>
#include <Imlib2.h>
int main(int argc, char *argv[])
{
int w1, h1,w2, h2, hout;
Imlib_Image img1,img2,imageout;
char *filein1,*filein2, *fileout;
	filein1 = argv[1];
	filein2 = argv[2];
	fileout = argv[3];
	if (argc != 4)
	{
		fprintf(stderr, "Sintassi: %s img1 img2 outputimage\n",argv[0]);
		exit(1);
	}
	//Legge le immagini in input
	img1 = imlib_load_image(filein1);
	if(img1)
	{
		//Calcola le dimensioni
		imlib_context_set_image(img1);
		w1 = imlib_image_get_width();
		h1 = imlib_image_get_height();
	}	
	else
	{
		fprintf(stderr, "Immagime 1 (%s) non caricata\n",filein1);
		exit(1);
	}	
	img2 = imlib_load_image(filein2);
	if(img1)
	{
		imlib_context_set_image(img2);
		w2 = imlib_image_get_width();
		h2 = imlib_image_get_height();
	}	
	else
	{
		fprintf(stderr, "Immagime 2 (%s) non caricata\n",filein2);
		exit(1);
	}	
	if(w1 != w2)
	{
		fprintf(stderr, "Le due immagini devono avere la stessa larghezza!!\n");
		exit(1);
	}
	hout = h1+h2;	
 
	//crea l'immagine di output		
	imageout = imlib_create_image(w1, hout);
  if (imageout)
  {
    char *tmp;
		imlib_context_set_image(imageout);
		imlib_blend_image_onto_image(img1,0,0,0,w1,h1,0,0,w1,h1); 	
		imlib_blend_image_onto_image(img2,0,0,0,w1,h2,0,h1,w1,h2); 	
    /* set the image format to be the format of the extension of our last */
    /* argument - i.e. .png = png, .tif = tiff etc. */
    tmp = strrchr(fileout, '.');
    if(tmp)
       imlib_image_set_format(tmp + 1);
    /* save the image */
    imlib_save_image(fileout);
  }
  else
	{
		fprintf(stderr, "Errrore creazione immagine di output\n");
		exit(1);
	}
 
	imlib_context_set_image(img1);
	imlib_free_image();
	imlib_context_set_image(img2);
	imlib_free_image();
	imlib_context_set_image(imageout);
	imlib_free_image();
	exit(0);
}

 strippato sono 4k di eseguibile, io te lo incollo, se lo vuoi provare..
Tu sei fuori! ;)
Grazie mille, me lo sono salvato.
Bye.

 Grazie mille, me lo sono salvato.
prego
se un giorno lo proverai, esigo feedback!