Avatar billede danic Nybegynder
23. juni 2005 - 12:35 Der er 7 kommentarer og
1 løsning

Thumbnails - modificering af script

Er der en venlig sjæl som har tid og lyst at modificerer dette script til også at gemme thumbnail? Den skal skærer billedet der uploades ned til 1/4 af størrelsen, og gemme det som $filnavn _thumb

Jeg ved ikke om man kan benytte en lib til truecolor, når det både er jpg + gif billeder som uploades.

$fil = $_FILES["picfile1"];
$max_stoerrelse = 500;
$bibliotek = "/pics";
$filtyper_tilladt = array("image/jpeg", "image/png", "image/gif", "image/pjpeg", "image/x-png");
   
if ($fil["size"] > 0)
{
        $filnavn = strtolower(ereg_replace("[^a-zA-Z0-9\_\.\-]", "_", $fil["name"]));
        $fil_sti = $bibliotek . "/" . $filnavn;
        $fra = $fil["tmp_name"];
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil["type"];
        $fejl = "0";
       
        if(!in_array($filtype, $filtyper_tilladt)) {
            error("Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen $filnavn kan derfor ikke uploades!");
            $fejl = "1";
        }
        if ($fil_stoerrelse > $max_stoerrelse) {
            error("Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!");
            $fejl = "1";
        }
        if ($fejl == "0")
        {
            $til = $_SERVER["DOCUMENT_ROOT"] . $fil_sti;

            if (move_uploaded_file($fra, $til)) {
               
                  // Skriver filen i db     

//skriver i mysql   
                }
                return $fil_sti;
           
            } else {
                error("Desværre, filen '$filnavn' kunne ikke uploades!");
                return false;
        }
}
?>
Avatar billede coderdk Praktikant
24. juni 2005 - 17:54 #1
Tag funktionen fra: http://php.coder.dk/resizeimg.php

Ændr så:

if (move_uploaded_file($fra, $til)) {
             
                  // Skriver filen i db   

//skriver i mysql 
                }
                return $fil_sti;
         
            }


til


if (move_uploaded_file($fra, $til)) {
             
                  // Skriver filen i db   

//skriver i mysql 
                  resize( $til, $til . '_thumb', 120, 120 )
                }
                return $fil_sti;
         
            }


Så får du en thumbnail der er maximalt 120 pixels bred/høj...
Avatar billede danic Nybegynder
27. juni 2005 - 16:29 #2
output bliver : a.ven___skovparti.jpg_thumb

er der ikke muligt at lave den om til thumb_a.ven___skovparti.jpg ved at skrive:
resize( $til, 'thumb' . $til, 120, 120 ); men det virker ikke :(
Avatar billede coderdk Praktikant
27. juni 2005 - 19:24 #3
resize( $til, dirname($til) . '/thumb_' . basename($til), 120, 120 )
Avatar billede danic Nybegynder
27. juni 2005 - 21:41 #4
Super! - jeg formoder at funktionen kun virker på jpg ?
Avatar billede coderdk Praktikant
28. juni 2005 - 00:31 #5
Ja, men det er nemt at resize andre typer... Kopiér bare koden, og hvis det f.eks. er PNG, kan du bruge "imagecreate" i stedet for "imagecreatetruecolor", og muligvis udskifte "imagecopyresampled" med "imagecopyresized" og slutteligt udskifte "imagejpeg" med "imagepng" - Evt. lige tilpas funktionernes argumenter, se dokumentationen :)
Avatar billede danic Nybegynder
28. juni 2005 - 09:44 #6
Ah...

Jeg har sat den til 120 x 90, men jeg har behov for et check om billedet før en thumb laves, er billedet horisontal eller vertikalt.

If (120 > 90) {
resize( $til, dirname($til) . '/thumb_' . basename($til), 120, 90 )
}else {
resize( $til, dirname($til) . '/thumb_' . basename($til), 90, 120 )
}
Det betyder at jeg skal måle billede størrelsen før jeg kører funktionen, eller kan det arbejdes ind i funktionen?

Jeg stiller gerne et ny spørgsmål i forlægnelse af dette.
Avatar billede coderdk Praktikant
28. juni 2005 - 17:04 #7
Med http://dk2.php.net/getimagesize kan du checke:
$info = getimagesize( $til );
if ( $info[0] > $info[1] )
{
  // Liggende
}
elseif ( $info[0] < $info[1] )
{
  // Stående
}
else
{
  // Kvadratisk
}
Avatar billede danic Nybegynder
28. juni 2005 - 21:08 #8
super!
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