Foros del Web » Programando para Internet » PHP »

imagenes

Estas en el tema de imagenes en el foro de PHP en Foros del Web. Hola gente, tengo una imagen con datos IPTC cargados y no logro extraer los datos datos. use estos ejemplos del manual http://www.php.net/manual/es/function.iptcparse.php y no me ...
  #1 (permalink)  
Antiguo 04/09/2011, 11:38
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
imagenes

Hola gente,
tengo una imagen con datos IPTC cargados y no logro extraer los datos datos.
use estos ejemplos del manual http://www.php.net/manual/es/function.iptcparse.php y no me dan buenos resultados, mas bien errores.

Instale el EXIF VIEWER de firefox y ahi si puedo ver toda la informacion.

Como puedo extraer esa misma informacion con PHP?

hice esto:
Código PHP:
Ver original
  1. var_dump($imageIPTC);  //path de imagen ok
  2.  
  3.         function output_iptc_data( $image_path ) {
  4.             $size = getimagesize ( $image_path, $info);
  5.             var_dump($info);  //DEVUELVE algo asi: Photoshop CS3 Windows2011:05:08 09:25:28�0221��(�HH����Adobed���         ����� ���  s!1AQa"q�2���B#�R��3b�$r��%C4S���cs�5D'���6Tdt���&� ��EF��V�U( y muchos caracteres raros
  6.              if(is_array($info)) {
  7.                 $iptc = iptcparse($info["APP13"]);
  8.                 foreach (array_keys($iptc) as $s) { //LINEA 220
  9.                   // devuelve este error: Warning: array_keys() [function.array-keys]: The first argument should be an array in save.php on line 220
  10.                   //Warning: Invalid argument supplied for foreach() in save.php on line 220
  11.                     $c = count ($iptc[$s]);
  12.                     for ($i=0; $i <$c; $i++)
  13.                     {
  14.                         echo $s.' = '.$iptc[$s][$i].'<br>';
  15.                     }
  16.                 }
  17.             }
  18.         }
  19.         $size = getimagesize($imageIPTC, $info);
  20.          output_iptc_data($imageIPTC);

gracias

Última edición por Patriarka; 04/09/2011 a las 11:45
  #2 (permalink)  
Antiguo 04/09/2011, 13:11
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: imagenes

No entiendo para que haces 2 bucles y das tanta vuelta para mostrar un array, desde que la imagen tenga APP13 te va a mostrar su información. ¿Estás seguro que tiene APP13? Podrías compartir la imagen?

Código PHP:
Ver original
  1. <?php
  2. $imageIPTC = 'imagen.jpg';
  3.  
  4. function output_iptc_data($image_path) {
  5.     $size = getimagesize($image_path, $info);
  6.     if (is_array($info)) {
  7.         if (isset($info["APP13"])) {
  8.             $iptc = iptcparse($info["APP13"]);
  9.             foreach ($iptc as $c => $v) {
  10.                 echo $c . ' ' . $v[0] . '<br />';
  11.             }
  12.         } else {
  13.             echo 'La imagen no tiene APP13';
  14.         }
  15.     }
  16. }
  17.  
  18. output_iptc_data($imageIPTC);
  19. ?>

Intentaste con exif ?

Código PHP:
Ver original
  1. <?php
  2. $exif = exif_read_data('imagen.jpg', 0, true);
  3. foreach ($exif as $clave => $seccion) {
  4.     foreach ($seccion as $c => $v) {
  5.         echo "<b>$c</b> $v <br />";
  6.     }
  7. }
  8. ?>

La clase Image IPTC de PEAR también sirve: http://pear.php.net/package/Image_IPTC/download

Código PHP:
Ver original
  1. <?php
  2. $iptc = new Image_IPTC('a.jpg');
  3. echo '<pre>';
  4. var_dump($iptc->getAllTags());
  5. echo '</pre>';

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 04/09/2011 a las 14:16
  #3 (permalink)  
Antiguo 04/09/2011, 14:31
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: imagenes

soy un idota grande, no ley todo tu mensaje solo hasta "Intentaste con exif ?"
igualmente que diferencia hay entre usar EXIF_READ_DATA Y iptcparse

Intente esto:
Código PHP:
Ver original
  1. $imageIPTC=$myConfig->product_images_base_path.$image->getImageFileName(); // a esta imagen le agrego la marca de agua
  2.          function output_iptc_data($image_path) {
  3.     $size = getimagesize($image_path, $info);
  4.     if (is_array($info)) {
  5.         var_dump(count($info));  //4
  6.         var_dump(iptcparse($info["APP13"])); //FALSE
  7.         foreach ($info as $c => $v) {
  8.                 echo $c . ' <br />';
  9.             }
  10.         if (isset($info["APP13"])) {
  11.             $iptc = iptcparse($info["APP13"]);
  12.             var_dump(is_array($iptc));  //FALSE
  13.             foreach ($iptc as $c => $v) {  //esta linea me da error POR QUE NISIQUIERA ES UN ARRAY
  14.                 echo $c . ' <br />';
  15. /*
  16. RESULTADO:
  17. APP1
  18. APP13  por lo que lei solo necesito este array
  19. APP2
  20. APP14
  21. */            }
  22.         } else {
  23.             echo 'La imagen no tiene APP13';
  24.         }
  25.     }
  26. }

lo que vos me pasaste funciona
  #4 (permalink)  
Antiguo 04/09/2011, 14:35
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: imagenes

Que tipo de información quieres sacar? Intentaste con exif?

No es un array porque devuelve false:

Cita:
Devuelve una matriz usando el marcador de etiquetas como un índice, y el valor como el valor. Devuelve FALSE si se produjo un error o si no se encontró información IPTC.
intenté con una imagen que si tiene APP13 y todo funciona.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 04/09/2011 a las 14:45
  #5 (permalink)  
Antiguo 04/09/2011, 14:50
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: imagenes

si ya probe y me trae informacion, pero yo necesito extraer toda la METADATA que tenga la imagen,
la que el usuario le carga copn el photoshop por ej en los atributos iptc
  #6 (permalink)  
Antiguo 04/09/2011, 14:59
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: imagenes

No todas las imágenes tienen esta información iptc porque es opcional, en caso de que no tenga te va a devolver false o si tiene te va a devolver un array. Si se produce un error también da como resultado false, depende de lo que le estés haciendo a la imagen.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 04/09/2011, 15:33
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: imagenes

vi una funcion que le puede agregar esos datos pero aun no la probe, tendria que funcionar?

Etiquetas: imagenes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.