martes 25 de mayo de 2010

Extraer metadatos de imagenes con php

¿Que aprenderemos hoy?

a saber si una foto a sido retocada, y poder ver la imagen original.

Bien los meta-datos son  Información que se guarda automáticamente al generar un archivo: .doc, .jpg,etc. y que no son visibles al ojo humano.

Esta información la genera el software que se utilizo para crear el archivo en el caso de las fotos, por ejemplo la genera el software de la cámara fotográfica ( solo si es digital ¬¬).

en el caso de las fotografiás un tipo de meta-datos son los EXIF.

bien los meta-datos EXIF contienen información importante como : fecha original, modelo de la cámara,etc. pero lo mas importante y en lo que se fijara este post es extraer el "THUMBNAIL" original.

Para los que no sabían cada vez que se modifica una imagen se guarda una copia en miniatura de la original que no se podría observar a simple vista, pero con algo de código podremos extraerlo.

ejemplo:

aquí vemos una foto trucada y a su lado el thumbnail extraido ( la foto original)


¿Como la extraemos con PHP ?

con exif_thumbnail:

eh aquí un pequeño código el cual puedes modificar:

 ------------------------------------------------------------------------

<?php


set_time_limit ( 0 );


function getmicrotime () {


$temparray = split ( " " , microtime ());


$returntime = $temparray [ 0 ]+ $temparray [ 1 ];


return $returntime ;


}


 





$maindir = "." ;


$mydir = opendir ( $maindir ) ;


$starttime = getmicrotime ();


$i = 0 ;


while( $fn = readdir ( $mydir ))


{


$startimagetime = getmicrotime ();


$ext = strtolower ( substr ( $fn , strlen ( $fn )- 3 ));


if ( $ext == "jpg" ) {


$i ++;


echo $fn . " se proceso satisfactorio<br>" ;


flush ();


 


$image = exif_thumbnail ( $fn , $width , $height , $type );


if ( $image !== false ) {


 


$handle = fopen ( $fn . ".thumb.jpg" , 'a' );


echo "<img src='".$fn."' width='400' height='301' />";


echo "<img src='/2010/05/quot.fn_.quot.thumb.jpg' width='400' height='301' />";


fwrite ( $handle , $image );


} else {


echo "imagen de miniatura no disponible para: " . $fn . "<br>" ;


echo "<img src='/2010/05/quot.fn.quot.thumb.jpg' width='400' height='301' />";


}


}


}


closedir ( $mydir );


$endtime = getmicrotime ();


echo "<br>Tiempo tardado " ;


print $endtime - $starttime ;


echo "<br> Imagenes procesadas: " . $i ;


 


?>




---------------------------------------------------------------------

simplemente montalo en localhost, mete las fotos en la carpeta raíz y  voala  , podrás ver las fotos originales .

Saludos Dr. NeoX. :)



3 comentarios:

Jimmy dijo...

Me tira unos errores:

Deprecated: Function split() is deprecated in C:\wamp\www\...

Warning: split() [function.split]: REG_EMPTY in C:\wamp\www\...

Si cambio el [split] ad [preg_split] sale:

Warning: preg_split() [function.preg-split]: Empty regular expression in C:\wamp\www\...


Que estoy haciendo mal?

El_chat0 dijo...

Interesante aun no le e probado pero ..en eso estamos...

muy bien redactado entendible y mas aun super educativo....

Dr. NeoX dijo...

ya modifiqué el código, lo que pasa es que blogspot había anulado parte del código.
ya lo pase editandolo desde html , todo esta ok cualquier cosa avisar
saludos :)

Dr.NeoX