27. januar 2004 - 21:13Der er
8 kommentarer og 1 løsning
Manipulering af billede i MySQL vha. PHP/GD
Den her er vist lidt svær:
Jeg har lavet et script, der efter upload af et billede til en fil, automatisk genererer en thumbnail og gemmer den med et nyt filnavn med forstavelsen thumb_:
Nu har jeg valgt i stedet at have billeder gemt i en tabel i MySQL, men jeg vil stadig gerne bruge image-funktionerne fra GD-biblioteket til at generere en thumbnail.
Billedet ligger i tabellen PICTURE i feltet DATA, som er longblob.
Og scriptet show_picture.php?pictureid=2 viser f.eks. billede nr. 2
Ved at trække billed-data ud og sende det direkte til ImageCreateFromString($data) får jeg istedet denne: Warning: imagecreatefromstring: Passed data is not in 'WBMP' format Det skal siges at billedet netop er i jpeg.
detox; imageCreateFromString virkede, da jeg fik kigget lidt nærmere på den linket og kommentaren, og iøvrigt fik henvist til de rigtige data i min tabel! Så det må jo betyde points til dig, hvis du giver et svar.
Jeg gik videre og fik thumbnailen lagt ind i tabellen (feltet thumb_data). Hele scriptet der nu sådan ud:
$q=mysql_query("SELECT * FROM picture WHERE pictureid=$pictureid"); $r = mysql_fetch_array($q);
$im =imageCreateFromString($r[data]);
$width=imagesx($im); $height=imagesy($im); $thumb = @imageCreate(100,100); imageCopyResized ($thumb, $im, 0, 0, 0, 0, 100, 100, imagesx($im), imagesy($im)); ob_start(); // output to buffer Imagejpeg($thumb); // write jpeg data as string (to buffer) $th = mysql_escape_string(ob_get_contents()); // get buffer content ob_end_clean(); // cleanup buffer $q=mysql_query("UPDATE picture SET thumb_data='$th' WHERE pictureid=$pictureid"); imageDestroy($im); imageDestroy($thumb);
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.