PDA

View Full Version : [PERL] Convertire .hpi in .jpg con ImageMagick: help


99caos
16-02-2007, 18:10
Salve forum,

in riferimento a questo sito (Convert from .hpi to .jpg (http://www.halley.cc/ed/linux/interop/hemera.html)) ho intrapreso un rapido studio di perl per capire come mai lo script proposto non funzionava.

Adesso comprendo lo script ma non capisco ancora come mai non funzioni (in realtà non lo comprendo benissimo...).

Riassumo la questione senza che leggiate il link.

Per chi possiede una collezione di foto di Hemera e usa un Mac per lavorare, la vita non è semplice.
Hemera infatti usa un formato proprietario per la gestione dei suoi files raggiungibile solo dal suo lettore software che effettua la conversione in jpg one to one delle immagini che si desidera usare.
Sfortuna vuole che detto software gira solo su windows e non su Mac.
Ergo: per poter usare i detti file che si usavano con un pò di artificio su Win bisogna cercare il modo di convertirli in .jpg

L'autore dell'articolo linkato sostiene che la struttura dei file è un misto tra .jpg e .png, togliendo i primi 32 byte da ogni file, è possibile convertire la foto in .jpg.

Veniamo allo script:

Prima parte:


open(I, "$name") || die;
binmode(I);
$_ = <I>;
close(I);

($j, $p) = m|^.{32}(.*)(\211PNG.*)$|s;
open(J, ">$name.jpg") &&
do { binmode(J); print J $j; close J; };
open(P, ">$name.png") &&
do { binmode(P); print P $p; close P; };

Si passa a $name il link del file e questo lo apre in due istanze.
Si creano dunque due file dai quali si sottraggono i primi 32 bit (non comprendo bene l'espressione regolare che viene usata, quindi mi fido di quello che ho capito).
Il risultato di questo script è la creazione di due file del tipo test.hpi.png e test.hpi.jpg (li dove test.hpi è il file originario).

Il problema è che i file risultano di 0 byte quindi non si può passare alla seconda parte dello script che è illustrata nell'articolo linkato

Non so come venirne a capo, da giorni mi trovo bloccato e non posso più usare i miei files su Mac... tutto ciò è abbastanza frustrante.

Mi affido a voi

kingv
16-02-2007, 22:07
non ho letto l'articolo, ma da quel frammento di codice che hai postato sembra che ogni file hpi contenga sia il jpg che il png.
non potresti renderne disponibile uno (per mail magari, visto che sarà materiale sotto copyright penso) per poter fare una prova?



il fatto che i file ti vengano generati vuoti significa che quella rexexp non viene matchata dal file in input.

99caos
17-02-2007, 01:23
hai un PM

kingv
17-02-2007, 14:54
ho guardato il file che mi hai mandato.
aggiungi in testa al tuo programma (prima della "open"):

undef $/;

ho fatto una prova e genera correttamente jpg e png, poi puoi andare avanti con le operazioni con imagemagik

fammi sapere