[PHP] PNG-thumbnails genereren ... net niet :(

Pagina: 1
Acties:

  • Badger
  • Registratie: November 2000
  • Laatst online: 01-09-2025
In het hier onderstaande script wordt op basis van de extentie bepaald of er een thumbnail van een bepaald type moet worden gemaakt.
Echter met de regels

PHP:
1
<?              else if(preg_match("/.png/i", $image_name))            {            makePngThumb($image_name,$thumb_width,$thumb_path);            }?>

gaat het hele script over de zeik en werkt het niet.
Met alleen de Jpeg variant werkt hij wel goed.

Naast dat het probleem in de kan code zitten vertrouw ik ook niet erg PHP 4.2.1 en de GD library (1.8.x).

Dus zit het probleem in de code of in de libraries?

PS. Als je nog andere fouten ziet of dingen die verbeterd kunnen worden laat me weten. Ben nog nie zo lang serieus met php bezig.
PHP:
1
<?//thumnailing images$default_dir = "/www/htdocs/test/"; //directory waar de orginele afbeeldingen in staan van het formaat png,jpg of gif$thumb_path = "/www/htdocs/test/thumbs/"; //directory van de thumbs$thumb_width = "100"; //wijdte van de thumbnails in pixels//eigenlijke thumbnail functiefunction makeJpgThumb($image_name,$thumb_width,$thumb_path){$src_img = imagecreatefromjpeg($image_name);$orig_w=imagesx($src_img);$orig_h=imagesy($src_img);$new_w = $thumb_width;$diff=$orig_w/$new_w;$new_h=$orig_h/$diff;$dst_img = imagecreate($new_w,$new_h);imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));imagejpeg($dst_img, "$thumb_path/thumbnail_$image_name");}function makePngThumb($image_name,$thumb_width,$thumb_path){$src_img = imagecreatefrompng($image_name);$orig_w=imagesx($src_img);$orig_h=imagesy($src_img);$new_w = $thumb_width;$diff=$orig_w/$new_w;$new_h=$orig_h/$diff;$dst_img = imagecreate($new_w,$new_h);imagecopyresized($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));imagepng($dst_img, "$thumb_path/thumbnail_$image_name");}//retrieven van de bestandsnamenfunction makeThumbs($default_dir,$thumb_width,$thumb_path){//ophalen van de bestandsnamenchdir($default_dir);if(!($dp = opendir($default_dir))) die("Cannot open $default_dir.");while($image_name = readdir($dp))    {        //bepalen of het bestandstype juist is    //    NOTE: GIF is niet meer supported in GD graphics library 1.6 en hoger    if(preg_match("/.png|.jpe?g/i", $image_name))        {        //indien het bestandstype juist is wordt aan de hand van de extentie een thumbnail gemaakt        if(preg_match("/.jpe?g/i", $image_name))            {            makeJpgThumb($image_name,$thumb_width,$thumb_path);            }        else if(preg_match("/.png/i", $image_name))            {            makePngThumb($image_name,$thumb_width,$thumb_path);            }        }    }    closedir($dp);}//aanroepen van de functie bij het openen van de paginamakeThumbs($default_dir,$thumb_width,$thumb_path);echo("done");?>

  • _DeWie_
  • Registratie: November 2001
  • Laatst online: 10-04 16:23
Als je je PNG support wil testen moet je het gewoon is even proberen met een simpel testscript voor een png.

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Op dinsdag 04 juni 2002 23:15 schreef Sir_Floppy het volgende:
...
gaat het hele script over de zeik en werkt het niet.
...
Welke foutmeldingen krijg je dan?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 03-09 15:18

Crazy D

I think we should take a look.

Is het niet "veiliger" (file-naam onafhankelijk) om getImageSize te gebruiken? Die geeft niet alleen de width en height, maar ook het image-type.

Exact expert nodig?


  • Badger
  • Registratie: November 2000
  • Laatst online: 01-09-2025
www.rammelbakmobiel could not be found. Please check the name and try again.

gebruikte url: http://rammelbakmobiel/test/thumbs.php (interne server).

Uit mijn apache2 (op Gentoo 1.2) error-log:
[Wed Jun 05 00:24:38 2002] [notice] child pid 6317 exit signal Segmentation fault (11)

Verwijderd

segmentaion fault... da's nie lekker.

Probeer eens te upgraden naar 2.0.1.
Dat resizen ziet er bij deze versie ook 100 x beter uit want je kan nu gebruik maken van imagecopyresampled i.p.v. imagecopyresized.

Hier een stukje om .jpg's te resizen.
code:
1
2
3
4
5
6
7
8
9
10
$file_name = 'in.jpg';
$new_file_name 'out.jpg';
$picturewidth = 320;
$pictureheight = 240;
$compratio = 80;

$origImg = ImageCreateFromJPEG($file_name);
$newImg = imagecreatetruecolor($picturewidth, $pictureheight);
imagecopyresampled($newImg, $origImg, 0, 0, 0, 0, $picturewidth, $pictureheight, ImageSX($origImg), ImageSY($origImg));
imagejpeg($newImg, "$new_file_name", $compratio);

ongeveer... :)

Verwijderd

if(preg_match("/.png/i", $image_name)

geldt een . niet voor ALLE tekens en zou je die egenlijk moeten escapen?

zomaar ff terzijde trouwens hoor...

  • Badger
  • Registratie: November 2000
  • Laatst online: 01-09-2025
hmm ja das waar maar deze fout verdingest niet ut scrypt
Pagina: 1