Avatar billede aslan Nybegynder
25. januar 2004 - 23:42 Der er 4 kommentarer

Formindske et billede uden at forvrænge det?

I eksemplet her smider jeg et billede i databasen :


    if(is_uploaded_file($userfile)) 
    { 
                move_uploaded_file( $userfile, "tmp.jpg");
                $data = addslashes(fread(fopen("tmp.jpg", "r"), filesize("tmp.jpg")));
                unlink( "tmp.jpg" );
               
                $res = mysql_query("select * from billede where billedId = '$id'");
                if(mysql_num_rows($res) >0)
                {
                  mysql_query("update billede set billede='$data',filetype='$userfile_type',filename='$userfile_name',filesize='$userfile_size' where billedId='$id'");
                }
                else
                {
                  $query ="insert into billede (billede,filetype,filename,filesize,billedId) values('$data','$userfile_type','$userfile_name','$userfile_size','$id')";       
          mysql_query($query) or die(mysql_error());
              }
                 
      header("location:rediger.php");           
    }


Er det muligt at jeg kan formindske billedet f.eks ved at sige at højden på billederne kun må være 200 pixels og så bredden retter sig ud fra det uden at blive forvrænget? Billedet skal selvfølgelig samtidig fylde mindre så det ikke fylder så meget i databasen.
Avatar billede googolplex Novice
26. januar 2004 - 00:38 #1
Brug denne funktion:

function Thumb($sourcefile, $targetfile) {
    $size = 80;  // Max størrelse (pixler)
    $source_id = imageCreateFromJPEG($sourcefile);
    $source_x = imagesx($source_id);
    $source_y = imagesy($source_id);
    $delta = $size/max($source_x, $source_y);
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    imagecopyresampled($target_id,$source_id,0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg($target_id,$targetfile,100);
}
Avatar billede googolplex Novice
26. januar 2004 - 00:40 #2
Det er desuden er dårlig ide at lægge billederne direkte i databasen! Læg kun stien til billedet i databasen og læg billedet i en mappe.
Avatar billede madd Nybegynder
26. januar 2004 - 01:17 #3
Alternativt kan anbefales imagemagick. Der findes en - godtnok smule skrabet - API i PEAR-reposity som du kan kigge på.

/mattias
Avatar billede aslan Nybegynder
27. januar 2004 - 00:13 #4
googolplex hvad er forskellen på $sourcefile og $targetfile og kan funktionen ikke kun klare jpg? Hva med andre formater?
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