Toon posts:

[PHP] Manier om een .jpg/.jpeg te valideren?

Pagina: 1
Acties:
  • 207 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
of het plaatje daadwerkelijk goed is en niet een ander iets is behalve dan een jpeg gecomprimeerd plaatje?...

  • Orphix
  • Registratie: Februari 2000
  • Niet online
http://nl.php.net/manual/nl/function.getimagesize.php
With JPG images, two extras index are returned : channel and bits. channel will be 3 for RGB pictures, and 4 for CMYK pictures. bits is the number of bits for each color.

Verwijderd

Topicstarter
Ok stel ik heb een jpg, maar die is niet helemaal lekker maar het is wel een jpg hoe kan ik dan checken of die image echt goed is... (soort crc check :P) maar dan wanneer een user dat plaatje heeft geuploaded :D..

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Je kan kijken of het plaatje te resizen is ofzo?
Buildin GD gebeuren of met een externe tool zoals ImageMagick..

  • Splatter
  • Registratie: December 2000
  • Laatst online: 26-11-2021
Je kunt de MIME-header van het ge-uploade bestand checken.
Deze moet dan 'image/jpeg' of 'image/pjpeg' (progressive jpeg) zijn. Zie regel 5 in de code in dit topic.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Op vrijdag 01 maart 2002 13:17 schreef Splatter het volgende:
Je kunt de MIME-header van het ge-uploade bestand checken.
Deze moet dan 'image/jpeg' of 'image/pjpeg' (progressive jpeg) zijn. Zie regel 5 in de code in dit topic.
Onverstandig. Aangezien die info van de browser komt en makkelik te faken is

Programmer - an organism that turns coffee into software.


  • MikeN
  • Registratie: April 2001
  • Laatst online: 11:07
Ik zou toch voor het resizen gaan. Dat is volgens mij de enige manier om het echt te bepalen. Dan moet tenslotte alle data behandeld worden.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 11:20
Ja, ik vraag me ook wel eens af wat er gebeurt als ik een jpg upload die door "the joiner" is gemaakt >:)

Verwijderd

Je zou naar de header kunnen kijken, dwz de eerste bytes inlezen. Dat is ook wat MS doet om bv te bepalen dat het geen jpg is maar een WMF en daarom windows media player voor je opstart.

Misschien dat je voor header herkenning eens op mdsn kunt kijken.

Verwijderd

Topicstarter
Op vrijdag 01 maart 2002 15:30 schreef otaku-san het volgende:
Je zou naar de header kunnen kijken, dwz de eerste bytes inlezen. Dat is ook wat MS doet om bv te bepalen dat het geen jpg is maar een WMF en daarom windows media player voor je opstart.

Misschien dat je voor header herkenning eens op mdsn kunt kijken.
hey Otaku-san ik heb gekeken maar weinig gevonden oftewel niets :(... Ik weet uit het verleden (FOK) dat jij altijd goede reacties hebt maar zou je nu ook een linkje kunnen regelen...

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
check eens op ImageCreateFromJPEG in de manual:
ImagecreateFromJPEG() returns an empty string on failure. It also outputs an error message, which unfortunately displays as a broken link in a browser. To ease debugging the following example will produce an error JPEG:
PHP:
1
<?function LoadJpeg ($imgname) {    $im = @ImageCreateFromJPEG ($imgname); /* Attempt to open */    if (!$im) { /* See if it failed */        $im = ImageCreate (150, 30); /* Create a blank image */        $bgc = ImageColorAllocate ($im, 255, 255, 255);        $tc  = ImageColorAllocate ($im, 0, 0, 0);        ImageFilledRectangle ($im, 0, 0, 150, 30, $bgc);        /* Output an errmsg */        ImageString ($im, 1, 5, 5, "Error loading $imgname", $tc);    }    return $im;}?>

Met deze code moet het je vast wel lukken om iets te bouwen dat checked of een bestand ook echt een jpeg'je is :)

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 24-08 14:05

Willem2

Ω is futile

had hetzelfde probleem, heb het zo opgelost:
PHP:
1
<?    while ($test = $reader->read()){        $extensie = strtolower(substr($test, -3,3));        $image = $dir[fotos]."/".$test;        $size = @getimagesize($image);        // first we check the file type by extension        if (!preg_match("/$dir[type]/", $extensie)) {            continue;        }        // now we check the real file type; based on file header 1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF        elseif (!file_exists($data) &amp;&amp; $size[2] != 2) {            // move the faulty image to the error dir before any other processing occurs            copy($image, $dir[fotos]."/error/".$test);            unlink($image);        }        // check the file for data corruption        elseif (!file_exists($data) &amp;&amp; !@ImageCreateFromJPEG($image)) {            copy($image, $dir[fotos]."/error/".$test);            unlink($image);        }        //these are supposed to be the good ones!        else {            $names[] = $test;        }    } // end while?>

en nee, ik houd niet van voetbal... :)


  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

@ImageCreateFromJPEG($image) is inderdaad slim!

als het geen jpeg is geeft hij natuurlijk false terug :)

  • Willem2
  • Registratie: Oktober 2000
  • Laatst online: 24-08 14:05

Willem2

Ω is futile

nou, de eerste 2 stappen halen er als het goed is de jpg als tussenuit; cd @ImageCreateFromJPEG($image) is bedoeld om verrotte files er tussen uit te halen omdat anders php over zijn nek gaat als je er later mee gaat spelen! :)

en nee, ik houd niet van voetbal... :)

Pagina: 1