Gå til innhold

Hente ut diverse exif data med php


Anbefalte innlegg

Har tittet litt og kom fram til denne:

http://no.php.net/manual/en/function.exif-read-data.php

 

Fatter ikke hvordan den skal brukes for å hente ut det jeg vil ha. Jeg vil gjerne ha eksponering, blender, evt dato, blits avfyrt eller ei og iso. Har sett igjennom et gigantisk script der man fikk ut slike data, men dette scriptet var en del av et større galleri og det ble for mange variabler jeg ikke fant hvor var hentet ifra, og hvilke filer som var inkludert.

 

Kan noen komme med et eksempel på hvordan jeg f.eks kun henter ut lukkertid så skal jeg se om jeg ikke klarer resten selv. :wee:

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet-rXRozPkg

Et eksempel:

 

$image = "/path/til/bilde/IMG_0129.JPG";

$exif = exif_read_data($image);
   foreach ($exif as $key => $value) {
   	echo $key.": ".$value."<br />\n";    
   }

 

Gir følgende output på eksempelbildet mitt:

 

FileName: IMG_0129.JPG

FileDateTime: 1162648585

FileSize: 169236

FileType: 2

MimeType: image/jpeg

SectionsFound: ANY_TAG, IFD0, THUMBNAIL, EXIF, INTEROP

COMPUTED: Array

Make: Canon

Model: Canon DIGITAL IXUS 750

 

+ mye mye mer info. Bl.a. ShutterSpeedValue: 189/32

 

Ønsker du kun å hente ut et par verdier, så ville jeg gjort noe slik:

 

    foreach ($exif as $key => $value) {
       switch ($key):
       case 'ShutterSpeedValue':
            $lukker = $value;
            break;
       case 'ExposureTime'
            $eksponering = $value;
            break;

       osv.osv.osv.
        default:
             //echo "Ukjent nøkkel, \"$key\", verdi: $val<br />\n";
         endswitch;
   	

   }

 

 

Så er det bare å bruke $lukker og $eksponering etterpå.

Endret av Slettet-rXRozPkg
Lenke til kommentar
  • 1 måned senere...

Takk lumted!

 

Har laget et nogenlunde greit script som henter ut datene. Noen dataer er dog i et merkelig format, f.eks er blender oppgitt til 56/10, istedet for 5.6, og shutter 600/10 istedet for 60/1. Hvordan kan jeg endre disse til de verdiene jeg vil ha? Om jeg må sjekke hver eneste verdi "manuelt" og bytter den ut med en tilsvarende selvskreven verdi kan jeg tenke det ut selv, men dette er jo mye arbeid.

 

Spesielt datoen sliter jeg med. Den kommer ut slik:

FileDateTime: 1158847184

 

Jeg ser ingen sammenheng mellom noen datoer og klokkeslett der. Er dato som er viktigst.

Endret av -Teddy-
Lenke til kommentar
Gjest Slettet+142

time() angir antall sekunder fra 1.jan 1970. så med den her, få du tiden atm du laster siden...

PHP

<?php

/*

$dato = 1166267848;

echo $dato;

echo "<br>";

*/

 

$dato time();

//$dato = $exif["FileDateTime"];

 

echo $dato;

 

echo "<br>";

$dato date("Y-m-d H:i:s"$dato);

 

 

echo $dato;

 

echo "<br>";

?>

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142

sorry.. jeg tenkte ikke lengre :blush:

har "spoilet" posten fra isted med mer tekst her

 

 

time() angir antall sekunder fra 1.jan 1970. så med den her, få du tiden atm du laster siden...

 

meninger her er at over denne koden kan du f.eks ha koden som lumted postet

$image = "/path/til/bilde/IMG_0129.JPG";

$exif = exif_read_data($image);

og så dette under.

PHP

<?php

 

$dato $exif["FileDateTime"]; // henter ut de tallene som du lurte på hva var i posten du skrev idag kl. 11:46

 

echo $dato//skriver ut tallene

 

echo "<br>";

$dato date("Y-m-d H:i:s"$dato);

 

 

echo $dato// skriver ut datoen

 

echo "<br>";

?>

sorry det var dårlig forklart.

 

 

Endret av Slettet+142
Lenke til kommentar
Gjest Slettet+142

vel.. på brennvidden kan du gjøre det enkelt

 

<?php

$bvidde = explode("/", $exif["Brennvidde"]); // endre her til den riktige nøkkelen!
$bvidde = $bvidde[0] / $bvidde[1];

echo $bvidde;
?>

 

på lukkertide(ShutterTime?) er det litt værre

 

<?php

$lukke = explode("/", $exif["ShutterTime"]);
list($lukke1, $lukke2) = $lukke;

while( ($lukke1 / 10) >= 1 && ($lukke2 / 10) >= 1){
 $lukke1 /= 10;
 $lukke2 /= 10;
}

$lukke = $lukke1."/".$lukke2;

echo $lukke;

?>

 

eller noe sånt. men jeg er ikke sikker hverken på om koden virker eller på om den logikken i while-løkken er riktig satt opp

Endret av Slettet+142
Lenke til kommentar

En annen ting jeg lurer på; Hvordan legger man til ekstra tekst på slutten av en streng? Om jeg allerede har f.eks:

$data = "Lorem Ipsum"

 

... også vil jeg legge til ytterligere med tekst etter Ipsun, hvordan gjør jeg dette? Jeg vil ikke skrive den allerede eksisterende verdien.

 

EDIT: Fant det ut. Er jo bare logisk, blir litt som matteoppgaver. Bruker

PHP
<?php 

$data "Lorem Ipsum ";

$data2 "dolor sit et amnet";

$data3 = array("$data""$data2");

$data4 implode($data3);

echo ($data4); 

?>

Endret av -Teddy-
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...