imagemagick, convertire molti file

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
Avatar utente
leonardo2887
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 259
Iscrizione: venerdì 2 marzo 2007, 16:14
Contatti:

imagemagick, convertire molti file

Messaggio da leonardo2887 »

Salve a tutti,

avrei molti file .png da convertire in .pdf, e pensavo di usare imagemagick. Dato che si tratta di più di 300 immagini (è un libro di google books), cercavo un comando per concertirli tutti. Ho provato con

convert *.png *.pdf

e

convert *.png .pdf

ma converte solo un file, sapreste consigliarmi un comando che li converta tutti i file da png a pdf senza cambirgli di nome?
Grazie in anticipo per le risposte
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: imagemagick, convertire molti file

Messaggio da takeshi »

convert lavora con un file per volta quindi è meglio usare un ciclo for:

Codice: Seleziona tutto

for file in *.png; do
    convert "$file" ${file%.png}.pdf;
done
Raising Elephants Is So Utterly Boring
Avatar utente
leonardo2887
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 259
Iscrizione: venerdì 2 marzo 2007, 16:14
Contatti:

Re: imagemagick, convertire molti file

Messaggio da leonardo2887 »

Grazie mille per il suggerimento,
non conoscevo il ciclo for, andrò a studiarmelo un pochino
as-far-as-i-know
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1096
Iscrizione: martedì 26 maggio 2009, 13:23

Re: imagemagick, convertire molti file

Messaggio da as-far-as-i-know »

Penso che per il tuo libro ti possa essere utile la seguente procedura. Copi tutte le tue figure su una cartella (es. aaa) della tua directory di lavoro, per es. /home/nomeutente, e poi digiti

Codice: Seleziona tutto

convert aaa/*.png MioLibro.pdf
Otterrai, su /home/nomeutente, un unico file pdf con tutte le immagini che occupano una pagina ciascuna.
Puoi anche ridurre globalmente le dimensioni dei file .png originari, usando quest'altro comando, con l'opzione resize:

Codice: Seleziona tutto

convert -resize 800x600 aaa/*.png MioLibro2.pdf
Ciao
Message to Canonical: I dislike Unity and am ready to migrate somewhere. From Ubuntu 6.10 to 11.04 with love, thank you!
Avatar utente
leonardo2887
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 259
Iscrizione: venerdì 2 marzo 2007, 16:14
Contatti:

Re: imagemagick, convertire molti file

Messaggio da leonardo2887 »

grazie per quest'altro consiglio... la cosa strana è che nel libro pdf risultante le pagine non sono nell'ordine con cui sono nominati i file .png. Mi spiego meglio, i file sono nominati p1, p2, ... p500, ma nel libro non sono nello stesso ordine...
as-far-as-i-know
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1096
Iscrizione: martedì 26 maggio 2009, 13:23

Re: imagemagick, convertire molti file

Messaggio da as-far-as-i-know »

leonardo2887 ha scritto: grazie per quest'altro consiglio... la cosa strana è che nel libro pdf risultante le pagine non sono nell'ordine con cui sono nominati i file .png. Mi spiego meglio, i file sono nominati p1, p2, ... p500, ma nel libro non sono nello stesso ordine...
Basta installare, via synaptic (gestione pacchetti) il programmino pdfshuffler, che ti permette di spostare a piacere le pagine di MioLibro.pdf. L'ho provato tempo fa con un pdf di una ventina di pagine e la manovra è andata a buon fine. Con 500 pagine .... non saprei dirti! Prova.
Ciao 
Message to Canonical: I dislike Unity and am ready to migrate somewhere. From Ubuntu 6.10 to 11.04 with love, thank you!
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: imagemagick, convertire molti file

Messaggio da takeshi »

Non sapevo che convert potesse unire più immagini in un unico file pdf  ;)

Il tuo problema forse è dovuto al fatto che *.png non segue l'ordine che vuoi tu quando viene espanso.

Per imporre un ordine numerico puoi usare printf:

Codice: Seleziona tutto

convert $(printf "p%d.png " {1..500}) output.pdf
Raising Elephants Is So Utterly Boring
Avatar utente
dave83
Prode Principiante
Messaggi: 56
Iscrizione: venerdì 29 febbraio 2008, 15:59

Re: imagemagick, convertire molti file

Messaggio da dave83 »

takeshi ha scritto: Non sapevo che convert potesse unire più immagini in un unico file pdf  ;)

Il tuo problema forse è dovuto al fatto che *.png non segue l'ordine che vuoi tu quando viene espanso.

Per imporre un ordine numerico puoi usare printf:

Codice: Seleziona tutto

convert $(printf "p%d.png " {1..500}) output.pdf
Ho provato a usare il tuo comando per fare la stessa cosa; io ho file che si chiamano books, books(1), books(2), ...
Il comando corretto sarebbe questo?

Codice: Seleziona tutto

convert $(printf "books(%)d" {1..500}) output.pdf
Perchè mi dà un errore:

Codice: Seleziona tutto

bash: printf: ")": formato del carattere non valido
P.S: l'estensione .png del file l'ho tolta perchè altrimenti non funziona il comando convert.
La versione che ho io sembra funzionare solo senza estensioni per i file immagine in input.
Avatar utente
takeshi
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 789
Iscrizione: venerdì 24 novembre 2006, 18:33

Re: imagemagick, convertire molti file

Messaggio da takeshi »

printf si aspetta che dopo il simbolo % ci sia qualcosa di ben preciso (qua trovi
la documentazione per la funzione omonima del linguaggio C).

Usa:

Codice: Seleziona tutto

convert $(printf "books(%d) " {1..500}) output.pdf

Volendo puoi anche evitare printf:

Codice: Seleziona tutto

convert "books("{1..500}")" output.pdf
P.S: l'estensione .png del file l'ho tolta perchè altrimenti non funziona il comando convert.
La versione che ho io sembra funzionare solo senza estensioni per i file immagine in input.
Mi sembra strano, ma se a te funziona meglio cosi` :)
Raising Elephants Is So Utterly Boring
Avatar utente
Danielsan
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1372
Iscrizione: lunedì 31 marzo 2008, 23:09
Contatti:

Re: imagemagick, convertire molti file

Messaggio da Danielsan »

Per sistemare più immagini con convert nell'ordine corretto io ho trovato quest'altro metodo.

Ho rinominato i files che mi servivano con Gprename affinché avessero tutti 3 cifre partendo quindi da 001 fino a quel che mi serviva, perché il problema è che convert fa lo "scherzetto" di numerare le pagine da 1 a 10 in questo modo:

1
10
2
3
4
5
6
7
8
9

Ma se si imposta la sequenza a 3, o 4, cifre li numera correttamente così:

001
002
003
004
005
006
007
008
009
010

Ciao spero che possa essere utile a qualcun altro di passaggio! (b2b)
Debian Testing amd64 - Programma preferito: Inkscape
Iceweasel logo - Greasemonkey raccolta di script utili
Avatar utente
c_estrena
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 626
Iscrizione: lunedì 10 luglio 2006, 20:04
Distribuzione: Debian Wheezy
Località: franssia

Re: imagemagick, convertire molti file

Messaggio da c_estrena »

Grazie mille dei suggerimenti, gprename non lo conoscevo (ho provato con il corrispondente rename da linea di comando, ma il perl mi è un po' ostico) e funziona benissimo...ma ho l'impressione che effettivamente sia possibile attribuire dei numeri su tre cifre perché convert li metta in ordine, ma c'è un problema da qualche parte lo stesso
Con Flashgot e lo script di greasemonkey, quando scarico tutte le immagini in una cartella, e poi le rinomino, si mescolano tutte come se gprename facesse lo stessp errore di convert...ovvero PA10=002 dopo PA1=001 e così di seguito per cui mi mette prima 122 che 13!!
Ho risolto sempre con gprename sostituendo PA con PA00!
grande!
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti