Newsgroup: it.comp.software.tex
Titolo: \includegraphics, dimensionamento e orientazione foto

Devo fare un lavoro molto banale e molto noioso: una serie di foto (in
formato jpg), ognuna disposta in una sua pagina, con la sua banalissima
didascalia, e basta (per inciso, è la prima occasione in cui mi riesce di
usare TeX in ambito lavorativo: con centinaia di foto da sistemare in
questo modo, Word e altri programmi interattivi diventano una sofferenza
indicibile).
Con pdflatex, si fa tutto molto bene e in tempi brevi. L'unico problema è
impaginare le immagini tutte allo stesso modo: stessi margini, stesse
dimensioni, stessa distanza dal testo della didascalia, ecc. Le foto
vengono infatti da macchine diverse, con diversa risoluzione anche se le
solite proporzioni 4:3, alcune sono in orizzontale, altre in verticale in
un senso e altre in un altro. Vanno quindi scalate e girate.
E \includegraphics consente di farlo molto semplicemente, con le opzioni
angle e width o height, senza necessità di traformare preventivamente le
immagine con un altro programma di grafica. Girandole, però, le immagini
cambiano dimensioni, in particolare acquistano a volte una profondità. Il
testo della didascalia viene quindi leggermente più distante o più vicino,
e le immagine leggermente più in alto o più in basso. Questione di pochi
millimetri, ma si nota, scorrendo il documento a schermo, o sovrapponendo
le stampe.
Naturalmente, si può aggiustare la cosa a mano, ma così ricado un po' nella
pena di Word. Non c'è un modo di congegnare la trasformazione in
\includegraphics che metta a posto tutto automaticamente? Io ho fatto
diversi tentativi, cambiando l'origine della rotazione e usando totalheight
invece che height, ma nulla che sia riuscito a risolvere tutto.
Ciao.


Giovanni, cerco di interpretare la tua mail.
Userei i pacchetti:
textpos,
ifthen,
textmerg.
Mi sembra che un aiuto determinante al tuo problema venga dal pacchetto 
"textpos" che consente di posizionare il testo ma anche i grafici in una 
posizione precisa con coordinate assolute (quindi nel tuo caso 
didascalia in ogni pagina più la foto).
Ma tu dici che la foto può essere portrait o landscape. Allora, insieme 
a textpos, potresti usare il pacchetto textmerg che normalmente serve 
per creare lettere (del tipo stampa-unione di word) ma anche ovviamente 
per creare ripetitivamente le pagine del tuo lavoro partendo da un 
modello di base *.tex che contiene dei campi variabili (nel tuo caso 
potrebbero essere \Orientamento, \Nomefile, \Didascalia)  e da un file 
testo che contiene ORDINATAMENTE i valori delle variabili. In 
quest'ultimo puoi inserire ad esempio:
P
pippo.jpg
La mia prima foto  portrait
L
pluto.jpg
Questa è ovviamente la seconda foto landscape
.......
........
Dopodiché nel tuo modello *.tex puoi testare il primo campo 
\Orientamento con ifthen per vedere se è "P"ortrait o "L"andscape e di 
conseguenza posizionando in maniera acconcia (tramite le coordinate di 
textpos) la foto.
E' praticamente tutto in automatico.
Se ti servono ulteriori chiarimenti non esiatre a scrivere.
Ciao
Vittorio

 sia riuscito a risolvere tutto.
ciao,
io proverei a preprocessare le fotografie...
crea dei png con sfondo trasparente, tutti delle stesse dimensioni e
mettici sopra le tue foto ruotate/scalate, in modo che le immagini
che passi a \includegraphics abbiano tutte _esattamente_ le stesse
dimensioni
il tool che userei per fare in batch tutte le elaborazioni e'
"montage", incluso in imagemagick
hth,
                                                                gb
-- 
TORPEDOED BY AIRCRAFT. SINKING. U-10.

E' praticamente tutto in automatico.
Questa è, ahimè, la parte più facile; nel senso che lo faccio già con perl,
con cui mi trovo molto più a mio agio nel costruire procedure e analizzare
dati. Ho un database con immagini, didascalie, orientamenti e angoli, e un
script perl che da questo genera il documento TeX. La parte difficile è che
cosa dire a perl (o al meccanismo di template merge) di mettere nel
documento TeX che produce.
Provo a spiegare, anche se è un po' difficile senza un esempio pratico.
Quando si ruota un'immagine con \includegraphics, si ottiene un oggetto
tipografico diverso, secondo com'era l'immagine originale, qual è il punto
scelto come centro della rotazione, e l'angolo di cui si vuole ruotare
l'immagine. Se, per esempio, all'inizio avevi una "m", con una rotazione di
90° avrai probabilmente una "b", e con una di -90° una "q"; le cose
naturalmente sono ancora più complesse, diciamo che potresti finire anche
per avere qualcosa di simile a un "^" o a un "_".
Ti ringrazio per la segnalazione di textpos che è comunque uno strumento
interessante (e, in ogni caso, per l'interessamento), ma purtroppo la
capacità di posizionare un elemento secondo un riferimento assoluto, di per
sé, non basta: q e b, posizionati alle stesse coordinate assolute,
appariranno comunque diverse (qb: una con una gambina in su e l'altra con
una gambina in giù). L'ideale sarebbe riuscire a congegnare la
trasformazione in modo che produca sempre lo stesso oggetto.
Alternativamente, bisognerebbe applicare una correzione, ma purtroppo non
ho ancora capito come calcolare questa correzione per ogni caso (che non è
appena "landscape" o "portrait", ma le diverse combinazioni di orientazione
originale e angolo applicato), a parte procedere per tentativi.
Speravo che qualcuno avesse già affrontato il problema e che ci fosse
qualche soluzione magica che mi era sfuggita. Mi sa che purtroppo, invece,
la cosa più semplice alla fine è trasformare preventivamente tutte le
immagini. Mi secca un po', perché si aggiunge un passaggio e perché si
perde in flessibilità (la possibilità di usare la stessa immagine con
orientamento diverso in contesti diversi). Ho però trovato un'utilità
(jpegtran) che almeno dovrebbe rendere più semplice la trasformazione delle
immagini.
Ciao.

"montage", incluso in imagemagick
Ho trovato anche jpegtran, che mi pare potrebbe risolvere facilmente la
cosa.
Ciao.

originale e angolo applicato), a parte procedere per tentativi.
Aspetta aspetta aspetta... forse forse ci sono... quasi:
    \raisebox{\depth}[\totalheight][0pt]{%
       \includegraphics[angle=#1,origin=c,totalheight=...]{...}}
C'è ancora qualche minuscola fluttuazione, probabilmente dovuta
all'algoritmo utilizzato da graphicx per la rotazione, che a volte taglia
una strisciolina di qualche pixel, ma direi che il risultato è comunque
accettabile.
ciao.

 dispiace un po'.
potresti impiegare imgsize, visto che usi PERL:
-----------------------------------------------------------------
IMGSIZE(1)     User Contributed Perl Documentation     IMGSIZE(1)
NAME
       imgsize - read the dimensions of an image in several popu­
       lar formats
SYNOPSIS
        imgsize [ -r | -a | -f fmt ] file
------------------------------------------------------------------
per ricavare le dimensioni del box dell'immagine da includere, e poi, 
a partire da queste, decidere se ruotare o scalare l'immagine...
Un esempio di output:
   WIDTH=680 HEIGHT=764
al limite, mi sembra anche facile da leggere in una espressione 
regolare...
  Ciao ciao,
  P    
-- 
<!--_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
                      The Hacking Pages   
 
www.lulli.net
 
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-->

regolare...
Sì, c'è anche il modulo perl, Image::Size (che avevo già installato senza
saperlo, fra l'altro), sicché non c'è neppure bisogno di interpretare un
output intermedio. Ci avevo pensato, e avevo trovato un'altra, meno comoda,
utilità (jpeginfo).
Purtroppo, però, non basta. Cioè, questo mi dice le immagini che con
sicurezza devono essere ruotate, ma non in che verso. Per contro, ci
potrebbero essere altre immagini che hanno già l'orientamento giusto, ma
devono essere ruotate perché sono sottosopra.
Ci ho pensato a lungo, ma mi sa che l'unica è guardarsi le immagini (magari
anche solo in anteprima) una ad una.
Non che sia impossibile: basterebbe un sensore sulla fotocamera che
percepisce quale lato della fotocamera è orientato verso il basso e
registra l'informazione (trascuriamo il caso in cui uno vuol proprio fare
una foto storta). Purtroppo, non credo che esista, almeno non nelle
macchine che usiamo noi. O un po' di accortezza dell'operatore, che
potrebbe girare la macchina sempre nello stesso verso, o registrare il
verso di ogni foto o serie di foto. Anche di questa però non siamo molto
forniti.
Altrimenti, ci si potrebbe anche lanciare in un'avvincente interpretazione
automatica dell'immagine, ma dubito davvero che sia il caso.
Ciao.