-Teddy- Skrevet 4. november 2006 Skrevet 4. november 2006 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.
Gjest Slettet-rXRozPkg Skrevet 4. november 2006 Skrevet 4. november 2006 (endret) 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 4. november 2006 av Slettet-rXRozPkg
Peter Skrevet 4. november 2006 Skrevet 4. november 2006 Husk at ikke alle bilder har slik informasjon!
-Teddy- Skrevet 16. desember 2006 Forfatter Skrevet 16. desember 2006 (endret) 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 16. desember 2006 av -Teddy-
pgdx Skrevet 16. desember 2006 Skrevet 16. desember 2006 Ikke noe gale, det der. Dette er klokken på PC-en min nå: drange@laptop:~$ date +%s 1166267388 Det er oppgitt i UNIX-tid og viser antall sekunder fra 1. januar 1970. Du finner nok en måte å konvertere på http://no.php.net/manual/en/function.date.php
pgdx Skrevet 16. desember 2006 Skrevet 16. desember 2006 Prøv dette: <?php $dato = 1166267848; echo $dato; echo "\n"; $dato = date("Y-m-d H:i:s", $dato); echo $dato; echo "\n"; ?>
Gjest Slettet+142 Skrevet 16. desember 2006 Skrevet 16. desember 2006 (endret) 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 16. desember 2006 av Slettet+142
pgdx Skrevet 16. desember 2006 Skrevet 16. desember 2006 I og med at du ikke skriver noe særlig i posten din blir det litt vanskelig å tolke hva du vil. Og det at de eneste kommentarene i koden din bare er utkommentert kode gjør det ikke særlig lettere å forstå.
Gjest Slettet+142 Skrevet 16. desember 2006 Skrevet 16. desember 2006 (endret) sorry.. jeg tenkte ikke lengre 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 16. desember 2006 av Slettet+142
Gjest Slettet-rXRozPkg Skrevet 16. desember 2006 Skrevet 16. desember 2006 Hvorfor skrive det så langt, og over så mange linjer? :o) echo date("Y-m-d H:i:s", $exif["FileDateTime"]);
Gjest Slettet+142 Skrevet 16. desember 2006 Skrevet 16. desember 2006 fordi at du er mye smartere enn meg håper at -Teddy- har fått svaret sitt nå..
-Teddy- Skrevet 16. desember 2006 Forfatter Skrevet 16. desember 2006 Hehe, ja. Datoen har jeg fattet. Hva kan jeg gjøre med de andre datene? F.eks gjøre om lukkertiden "10/600" til "1/60", eller brennvidden 450/10 til 45. Veldig irriterende å ha en masse unødvendige deletegn og ikke fortkortede svar.
Gjest Slettet+142 Skrevet 16. desember 2006 Skrevet 16. desember 2006 (endret) 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 16. desember 2006 av Slettet+142
-Teddy- Skrevet 16. desember 2006 Forfatter Skrevet 16. desember 2006 Takk, virket fint dette. Skal se om jeg ikke klarer resten selv, tror jeg har tatt poenget.
-Teddy- Skrevet 17. desember 2006 Forfatter Skrevet 17. desember 2006 (endret) 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 17. desember 2006 av -Teddy-
pgdx Skrevet 17. desember 2006 Skrevet 17. desember 2006 .= <?php $data = "Brille"; $data2 = "maker"; $data3 = $data; $data3 .= $data2; echo $data3; echo "\n"; ?>
ZoRaC Skrevet 17. desember 2006 Skrevet 17. desember 2006 (endret) $data4 = $data . $data2; Mye lettere og mer korrekt Edit: Ble akkurat for sein Endret 17. desember 2006 av ZoRaC
-Teddy- Skrevet 17. desember 2006 Forfatter Skrevet 17. desember 2006 Ah, tenkte ikke på . jeg. Takk.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå