Avatar billede Slettet bruger
01. juni 2004 - 23:38 Der er 8 kommentarer og
1 løsning

Gem thumbnail i database (smid sourcen i en streng)

jeg vil gerne have sourcen til thumbnailen ind i en streng, som jeg gør med det oprindelige billede.. det prøver jeg med $thumbnail = addslashes(fread($new_img));, men det virker ikke... hvad skal jeg gør i stedet for??

<?php
    include("templates/script/php/db_connect.php");

    if($form_data && $form_data != "none") {
        $height = 150;
        $width = 150;
        $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

        if(eregi("image",$form_data_type)){
            if(eregi("\.J(PG|PEG|PE|FIF)$",$form_data_name)){
                $src_img = imagecreatefromjpeg($form_data);

                //her sættes width og height

                $new_img = imagecreatetruecolor($width,$height);
                imagecopyresampled($new_img,$src_img,0,0,0,0,$width,$height,imagesx($src_img),imagesy($src_img));
                imagejpeg($new_img);

                $thumbnail = addslashes(fread($new_img)); //her skulle billedet smides over i en streng, men dette sker desværre ikke ;(..
            }
        }

        $sql = "insert into files ..."
        mysql_query($sql);
    }
?>
Avatar billede detox Nybegynder
02. juni 2004 - 01:08 #1
Prøv:

$new_img = imagecreatetruecolor($width,$height);
imagecopyresampled($new_img,$src_img,0,0,0,0,$width,$height,imagesx($src_img),imagesy($src_img));
ob_start();
imagejpeg($new_img);
$thumbnail = addslashes(ob_get_flush());
Avatar billede detox Nybegynder
02. juni 2004 - 01:18 #2
Men lad det være sagt, at det er en dårlig idé at smide billeder i en database (rent performance-mæssigt). Det er meget hurtigere at ligge dem i mapper på serveren og så blot gemme url (og evt. andre oplysninger om billedet) i databasen.
Avatar billede sukos Juniormester
02. juni 2004 - 02:08 #3
Eller blot navnet på filen.
Så kan du i dit script definere hvor den ligger, og så hente den derfra.

<?php
$sti = "/images/"; // til http

$realpath = $_SERVER["DOCUMENT_ROOT"] . $sti; // fuld sti til at tjekke om den findes, finde str. i px m.m.
?>
Avatar billede Slettet bruger
02. juni 2004 - 07:49 #4
takker.. det var lige, hvad der skulle bruges..
Jeg har gjort det på denne måde for at kunne administrere siden nemmere.. Det kan godt være, det går lidt ud over performancen, men jeg vælger alligevel at gøre det på denne måde.. ellers tak for dit råd alligevel..
Avatar billede Slettet bruger
02. juni 2004 - 08:38 #5
jeg har rettet ob_get_flush(); til ob_get_contents() og tilføjet ob_end_clean().. på denne måde bliver billedet ikke skrevet ud.. jeg har desuden tilføjer imagedestroy(), så der ikke bliver brugt hukommelse på billedet..


<?php
    include("templates/script/php/db_connect.php");

    if($form_data && $form_data != "none") {
        $height = 150;
        $width = 150;
        $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));

            if(eregi("\.J(PG|PEG|PE|FIF)$",$form_data_name)){
                $src_img = imagecreatefromjpeg($form_data);

                if((imagesx($src_img) / $width) < (imagesy($src_img) / $height)){
                    $width = $height * imagesx($src_img) / imagesy($src_img);
                }else{
                    $height = $width * imagesy($src_img) / imagesx($src_img);
                }

                $new_img = imagecreatetruecolor($width,$height);
                imagecopyresampled($new_img,$src_img,0,0,0,0,$width,$height,imagesx($src_img),imagesy($src_img));

                ob_start();
                imagejpeg($new_img);
                $thumbnail = addslashes(ob_get_contents());
                ob_end_clean();
            }
        imagedestroy($new_img);
        $sql = "insert into files ..."
        mysql_query($sql);
    }
?>
Avatar billede detox Nybegynder
02. juni 2004 - 08:41 #6
Ja, og det fungerer?
Avatar billede Slettet bruger
02. juni 2004 - 08:43 #7
ikke helt alligevel.. det virker ikke rigtigt på .png.. tror jeg i hvert fald.. skal lige gennemgå koden igen...
Avatar billede Slettet bruger
02. juni 2004 - 08:45 #8
jeg havde skrevet

                $new_img = imagecreatetruecolor($width,$height);
                imagecopyresampled($new_img,$src_img,0,0,0,0,$width,$height,imagesx($src_img),imagesy($src_img));
                imagejpeg($new_img); <-- her går det galt


                ob_start();
                imagejpeg($new_img);
                $thumbnail = addslashes(ob_get_contents());
                ob_end_clean();

der var der imagejpeg($new_img);  både uden for og inden i objectet.. men det virker nu...
Avatar billede detox Nybegynder
02. juni 2004 - 08:57 #9
Fint nok. Ja, imagedestroy() er nok en god idé osse.
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