Avatar billede spidr Nybegynder
03. august 2005 - 13:19 Der er 8 kommentarer og
1 løsning

lave om på størrelse på uploadet billede

Jeg bruger koden nede for til at uploade billeder og ville høre om der var en måde at lave om på størrelsen på billedet der bliver uploadet uden at det mister for meget kvalitet?
Jeg vil gerne have lavet så billedets bredde altid er 300px. og så billedets højde så tilpasser sig der efter.


<?php
//Hvis bruger trykker på upload button
if(isset($_POST['uploadbtn'])) {


include("xxx");
    mysql_query("INSERT INTO Kodet (Navn, Placering, MSN, Tekst) VALUES ('$_POST[Navn]','$_POST[Placering]','$_POST[MSN]','$_POST[Tekst]')")or die(mysql_error());
$id_variabel = mysql_insert_id();

    //Tæl hvormange fil felter der bliver submitted
    $antal = count($_FILES['upfil']['name'])."<br>";
   
    //Upload dir
    $uploaddir = "/hsphere/local/home/winta/bevarfildeling.dk/baronerne/kod/";
   
    //Sæt filernes max størrelse i byte
    $maxfilesize = 1000000;
   
    //Her sættes tilladte filtyper
    $allowedfiles = array("jpg", "jpeg", "gif", "bmp", "tif", "png");
   
    //Kør det i en for løkke det antal gange der er fil felter
    for ($x=0; $x<$antal; $x++) {
       
        //find de tomme form felter, Her skal der intes gøre andet end måske skive en fejlkode ud
        if(empty($_FILES['upfil']['name'][$x])) {
           
            //Evt udskrives fejl her
            echo "fil nr $x er tom her skal der ikke gøres noget<br>";
           
        } else {           
           
            //Her sættes lidt variabler man kan bruge i scriptet
           
            //Det orginale filnavn
            $filnavn = $_FILES['upfil']['name'][$x];
           
            //Den orginale filstørrelse i byte
            $filsize = $_FILES['upfil']['size'][$x];
           
            //Den orginale mime filtype
            $filtype = $_FILES['upfil']['type'][$x];
           
            //Det tmp navn php giver filen
            $tmpname = $_FILES['upfil']['tmp_name'][$x];
           
            //Fil extension bruges til at tjekke om filtype er tilladt
            $ext = pathinfo($filnavn);
            $ext = strtolower($ext['extension']);
                       
            //Her testes om filens størrelse overskrider $maxsize
            if($filsize > $maxfilesize) {
                //Her udskrives en fejl besked hvis filen er for stor
                echo "Dit billede er for stort.";
            } else {
               
                //Her testes om filtype er tilladt
                if(!in_array($ext, $allowedfiles)) {
                   
                    //Her udskrives en fejl meddelse hvis ikke filtype er tilladt
                    echo "Vær sød kun at uploade billeder af typen: jpg, jpeg, gif, bmp, tif eller png";
                   
                } else {
                   
                    //Upload file
                    //Finder random filnavn til filen
                    $newfilename = $id_variabel . ".jpg";
           
                    //rykker uploadet fil til uploaddir
                    move_uploaded_file($tmpname, $uploaddir.$newfilename);
           
                    //Udskriver lidt info om filen       
                    echo "Tak fordi du gad dele dit billede med andre.";
                }
            }
        }
    }
} else {
   
    echo "Wups, der er vidst sket en fejl.";
}
?>
Avatar billede leif Seniormester
03. august 2005 - 13:24 #1
<?
$imgReal = @imagecreatefromjpeg($filnavn);
$x = ImagesX($imgReal);
$y = ImagesY($imgReal);

if($x > "400")
{
$imgReal = @imagecreatefromjpeg($_GET['pic']);
$newX = 400;
$newY = $newX * $y / $x;
$img = ImageCreateTrueColor($newX, $newY);
ImageCopyResampled($img, $imgReal, 0, 0, 0, 0, $newX, $newY, $x, $y);
list($imgDIR, $imgName) = explode("/", $filnavn);
ImageJPEG($img,"$imgName");
header('Content-Type: image/jpeg');
ImageJPEG($img);
}
?>

Ved ikke om du kan bruge det til noget ?
Avatar billede spidr Nybegynder
03. august 2005 - 14:01 #2
urgh, kan ikke helt se hvordan søren jeg skal ligge det ind :S
Avatar billede simon_jacobsen Nybegynder
03. august 2005 - 14:06 #3
lytter med
Avatar billede mollevp Nybegynder
03. august 2005 - 14:31 #4
Jeg lavede engang den her funktion til at lave tumbnails:

<?php



function ImgResizer($file, $dst_file,$width,$height)

    {

        /* ImgResizer - skalere billeder og gemmer billeder

        *

        * $file: fil der ønskes skaleret og gemt

        * $dst_file: filen det ønskes oprettet (evt med sti fx. "./img/billede.jpeg")

        * $width: ønskede bredde

        * $height: ønskede højde

        *

        * Returnere 1 ved sucess

        * Returnere 0 ved fejl

        *

        *

        * Conatact :morten@mortenvp.dk

        */





        $img_dim = GetImageSize($file);



        // [0] bredde, [1] højde



        if($img_dim[0] >= $img_dim[1]) // Hvis billedet er landscape

        {

            $height = $width / ($img_dim[0] / $img_dim[1]);

        }

        else // Hvis billedet er portrait

        {

            $width = $height * ($img_dim[0] / $img_dim[1]);

        }



        $src_img = ImageCreateFromJpeg($file);



        $dst_img = ImageCreate($width, $height); // Laver tumbnail



        ImageCopyResized($dst_img,$src_img,0,0,0,0,$width,$height,$img_dim[0],$img_dim[1]);



        ImageJpeg($dst_img,$dst_file); // Skriver billedet til fil



        ImageDestroy($dst_img); // Rydder op

        ImageDestroy($src_img); // Rydder op



        if(!file_exists($dst_file)) // Tjekker om filen er blevet oprettet

        {

            return 0;

        }

        else return 1;





    }

   

?>


du skal så kalde funktionen med:

>>  //Det tmp navn php giver filen
>>  $tmpname = $_FILES['upfil']['tmp_name'][$x];

som $file parameter.. men hvis du har adgang til GDlib 2.0.1 eller over kan du bruge imagecreatetruecolor (giver vist lidt bedre kvalitet?)

håber du kan få noget ud af det..
Avatar billede mollevp Nybegynder
03. august 2005 - 14:31 #5
arh.. en træls formatering det fik.. det beklager jeg..
Avatar billede jakobdo Ekspert
03. august 2005 - 15:34 #6
Er jeres resizer ikke kun til jpg/jpeg billeder?
Avatar billede spidr Nybegynder
03. august 2005 - 15:54 #7
jo ser sådan ud..
Avatar billede mollevp Nybegynder
03. august 2005 - 16:04 #8
jo, den der er..
Avatar billede spidr Nybegynder
18. december 2005 - 14:27 #9
Lukket på grund af intet svar..
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