Avatar billede tax Nybegynder
28. juli 2003 - 12:11 Der er 2 kommentarer og
1 løsning

Gemme Thumbnails i MySQL

Jeg har lavet et script, der skulle lave et thumbnail af nogle billeder jeg uploader. Disse thumbnails bliver lavet og jeg kan se at de er iorden.

Mit problem opstår blot når jeg vil lagre dem og hente dem igen fra en database.

Billederne bliver fyldte af kompressionsfejl. Masser af forkerte farver og firkantede artifakter.


Jeg gemmer billedet med følgende script:

$dst_img = imagecreate($dst_w,$dst_h);
imagecopyresized(
    $dst_img, $src_img,
    0, 0, 0, 0,
    $dst_w, $dst_h,
    $sz[0], $sz[1]
    ); // resize the image

//dette billede kan vises og ser 100% ok ud
imagejpeg($dst_img, "files/$uniquename.jpg", 70);

ob_start(); // Start capturing stdout.
imageJPEG($dst_img,'', 70); // As though output to browser.
$binaryThumbnail = ob_get_contents(); // the raw jpeg image data.
ob_end_clean(); // Dump the stdout so it does not screw other output.

$binaryThumbnail = addslashes($binaryThumbnail);
query("UPDATE FILES SET THUMBNAIL = '$binaryThumbnail' WHERE ID = $uniquename;");


Og henter det frem ved dette script:

<?php   
    header("Content-type: image/jpg"); // act as a jpg file to browser
    require("functions.php");
    $result=query("SELECT * FROM FILES ORDER BY ID DESC;");
    $obj = mysql_fetch_object($result);
    echo stripslashes($obj->THUMBNAIL); // send to browser, with special chars restored   
?>


Hvad gør jeg galt?!?
Avatar billede andy Nybegynder
28. juli 2003 - 12:28 #1
Well, jeg har aldrig set ideen i at gemme billeder i en database. Hvorfor ikke bare gemme en sti til billedet istedet og gemme det som normalt?

Anyway du gemmer dit thumbnail i et BLOB flet ikk?
Avatar billede tax Nybegynder
28. juli 2003 - 12:39 #2
Det er små thumbnails. Jeg fandt fejlen. Det var fordi at det script, der hentede filen ikke skal sende nogen header.


Således virker:

<?php   
    require("functions.php");
    $result=query("SELECT * FROM FILES WHERE ID = $id;");
    $obj = mysql_fetch_object($result);
    echo $obj->THUMBNAIL;
   
?>
Avatar billede erikjacobsen Ekspert
28. juli 2003 - 12:52 #3
vel mest fordi du sagde stripslashes - det skal man ikke ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester