[PHP] exif_imagetype afbeelding uit database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:03

me1299

$ondertitel

Topicstarter
Ik vroeg me af of er ook een manier is om met PHP de mime-type van een afbeelding uit een string op te vragen is.

Ik heb een aantal afbeeldingen in een database als blob staan en daarvan wil ik het mimetype bepalen.

exif_imagetype werkt dus wel voor een fysieke file, maar ik zie geen equivalente functie voor een blob.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Ik vroeg me af of er ook een manier is om met PHP de mime-type van een afbeelding uit een string op te vragen is.
Ik weet niet of het werkt, maar je zou het volgende kunnen proberen:

- Data uit database halen
- Data even wegschrijven in een tijdelijk bestand
- Met mime_content_type() even kijken wat de Content-Type is
- Tijdelijke bestand verwijderen

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:03

me1299

$ondertitel

Topicstarter
Ja dat had ik zelf ook bedacht, maar dat is eigenlijk een beetje dirty.. ik neem aan de PHP gewoon de fileheader doorzoekt naar bepaalde sleutelwoorden. Dat moet hij met een string evengoed kunnen.

Op google is hier ook al niks over te vinden..

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
DeathKnight24 schreef op vrijdag 27 februari 2009 @ 15:27:
Op google is hier ook al niks over te vinden..
Welke zoektermen heb je gebruikt? Als ik namelijk zoek op "determine content-type from string php" kom ik terecht op deze pagina: http://in.php.net/mime_content_type

Daar staat netjes uitgelegd hoe PHP de Content-Type bepaalt: "Returns the MIME content type for a file as determined by using information from the magic.mime file."

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:03

me1299

$ondertitel

Topicstarter
Ten eerste is die functie deprecated, en ten tweede kan die ook enkel met files omgaan.

Dit werkt overigens wel zoals ik al vermoede:

PHP:
1
2
3
4
5
6
7
    file_put_contents("temp", $row->$column);

    if (exif_imagetype('temp') != IMAGETYPE_GIF) {
        die("not gif");
    } else {
        die("gif");
    }


Maar ik blijf het onzinnig vinden om eerst iets op de hd weg te schrijven om het mimetype te bepalen...

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Het meest failsafe wat ik kan verzinnen is de imagefrom* functies gebruiken. De functie die een resource returned is het filetype. Dus als imagecreatefromjpg werkt heb je een jpg. Er zijn functies voor oa. JPG, PNG, GIF en dat zullen wel de meeste files zijn al.

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Laatst online: 19:03

me1299

$ondertitel

Topicstarter
Cartman! schreef op vrijdag 27 februari 2009 @ 15:54:
Het meest failsafe wat ik kan verzinnen is de imagefrom* functies gebruiken. De functie die een resource returned is het filetype. Dus als imagecreatefromjpg werkt heb je een jpg. Er zijn functies voor oa. JPG, PNG, GIF en dat zullen wel de meeste files zijn al.
Oke, dat is een goed idee, kan ik straks nog even proberen als ik tijd heb. Bedankt :)

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Over het algemeen worden die mimetypes bepaald aan de hand van magic numbers aan het begin van de file.

Wikipedia: Magic number (programming)

Lijkt me een stuk efficienter dan je image parsing routines eroverheen proberen te halen.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:01
Gebruik de Fileinfo class. http://nl3.php.net/manual/en/function.finfo-buffer.php

Die kan ook met strings overweg.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Jammer dat die pas vanaf PHP 5.3 erin zit en daar nog geen stable van is alleen ;)

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:01
Cartman! schreef op vrijdag 27 februari 2009 @ 16:25:
Jammer dat die pas vanaf PHP 5.3 erin zit en daar nog geen stable van is alleen ;)
Via PEAR is 'ie al beschikbaar en stable
Pagina: 1