Sono un php-dev per hobby e ho il seguente problema:
Ho un file rar, la cui intestazione è danneggiata, quindi l'estrazione non è completamente possibile. il contenuto non è compresso e può essere letto con es. un editor esadecimale. l'archivio contiene file jpeg, ma a causa dell'intestazione danneggiata, alcuni di essi non sono estraibili in winrar. Ho provato a riparare, ma una buona parte del file rimane rotta.
Voglio leggere il file e cercare i byte che indicano l'inizio e la fine di un file jpeg (da quello che so sono FFD8FF per l'avvio e FFD9FF per il fine). usando un editor esadecimale sono riuscito a trovare alcuni di quei byte, e anche l'estrazione dell'immagine in un file e la visualizzazione funziona. dal momento che il file è 500mb, voglio farlo automaticamente, e dal momento che sono php-friendly, mi piacerebbe farlo lì: -)
so come leggere un file bytewise (fread), quello che sto avendo difficoltà è, analizzare il file correttamente in esadecimale, così posso identificare gli inizi e le fini. quello a cui sto pensando è qualcosa del genere (in pseudocodice):
while( READ FILE UNTIL EOF ){
if( CURRENTBYTES == FFD8FF ){
$jpeg_file = READ FILE UNTIL CURRENTBYTES == FFD9FF
fwrite($jpeg_file, "xyz.jpg");
// return to while, looking for next FFD8FF
}
}
qualcuno potrebbe darmi un suggerimento, come la lettura e l'identificazione sarebbero fatte meglio? la domanda principale è, come posso leggere un file fino a un byte iniziale, quindi salvare quanto segue, quindi cercare il prossimo byte iniziale? efficienza, sicurezza, codice bellezza non sono un problema, voglio solo tutte le foto: -)
molti ringraziamenti per qualsiasi aiuto