Avatar billede glonda Nybegynder
28. august 2006 - 09:39 Der er 6 kommentarer og
1 løsning

upload funktion, lave thumbnails som resized

Hej jeg har lavet denne uploade funktion.

men jeg skal have den til at lave thumbnails. som bliver resized efter proncter eller lign. mener man skal bruge imagecopyresized funktion men kan ikke rigtig få det til at virke

Her er min kode:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<link href="../rouge.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
body {
    background-color: #eaeaea;
}
-->
</style></head>

<body>
<form enctype="multipart/form-data" action="upload_image.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="524288"/>

<fieldset><legend class="menu"><strong> Vælg et JPEG eller GIF format for at uplaode:</strong></legend>
<p><b class="tekst">Fil:</b>
  <input name="upload" type="file" id="upload"/>
</p>
</fieldset>
  <?PHP

        //tjekker om formen er submittet
        if (isset($_POST['submitted'])) {
       
        //Tjekker om der er uploadet en fil
       
        if (isset($_FILES['upload'])){
       
        //Validere typen af filen, som skal være JPG-JPEG eller gif
       
        $allowed = array ('image/jpeg' OR 'image/gif' OR 'image/jpg');
        if (in_array($_FILES['upload']['type'], $allowed)){
       
        //Flytter filen
       
        if (move_uploaded_file($_FILES['upload']['tmp_name'], "../pictures/{$_FILES['upload']['name']}")){
       
            echo '<p> Filen er uploadet!</p>';
           
        }else{ //hvis ikke den kan
       
        echo '<p><font color="red"> Filen kunne ikke flyttes på grund af: <b>';
       
        //Udksiver fejl besked
       
        switch($_FILES['upload']['error']){
       
        case 1:
        print 'Filen har overskredet maximum størrelse i uploade_max_filesize opsætning in php.ini.';
        break;
       
        case 2:
            print ' Filen overskred MAX_FILE_SIZE instillinger i HTML formen.';
            break;
       
        case 3:
            print 'Kun dele af filen blev uploadet.';
            break;
       
        case 4:
            print 'Ingen fil var uploadet.';
            break;
               
        case 6:
            print 'Ingen tempareret mappe var tilgænglig.';
            break;
       
        default:
            print 'En system fejl er opstået.';
            break;
    }

print '</b></font>.</p>';
   
}//slutning af if

       
    }else{   
            echo '<p><font color ="red"> Vær venlig at upload JPEG eller GIF billede.</font></p>';
            unlink ($_FILES['upload']['tmp_name']); //sletter filen
           
        }
       
    }else{ //  hvis ingen fil uploadet
   
    echo'<p><font color="red"> Filen er større en 512KB prøv igen.</font></p>';
   
    }
}       

?>
  <div align="center">
    <input name="submitted" type="submit" id="submitted" value="submit"/> 
  </div>
  <div align="left">
  <input type="hidden" name="submitted" value="TRUE"/>
  </div>
</form>
</body>
</html>
Avatar billede coderdk Praktikant
28. august 2006 - 11:43 #1
Du kan bruge denne funktion:

    function resize( $filename, $newfilename, $maxw, $maxh )
    {
        $img = getimagesize( $filename );
        $isJpg = false;
        if ( $img[2] == 2 )
        {
            $srcim = imagecreatefromjpeg( $filename );
            $isJpg = true;
        }
        else
        {
            $srcim = imagecreatefromgif( $filename );
        }
        $ow = imagesx( $srcim );
        $oh = imagesy( $srcim );
        $wscale = $maxw / $ow;
        $hscale = $maxh / $oh;
        $scale = ( $hscale < $wscale ? $hscale : $wscale );
        $nw = round( $ow * $scale, 0 );
        $nh = round( $oh * $scale, 0 );
        if ( $isJpg )
        {
            $dstim = imagecreatetruecolor( $nw, $nh );
            imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
            imagejpeg( $dstim, $newfilename, 85 );
        }
        else
        {
            $dstim = imagecreate( $nw, $nh );
            imagecopyresized( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
            imagegif( $dstim, $newfilename );
        }
       
        imagedestroy( $dstim );
        imagedestroy( $srcim );
    }

Eksempel på brug. Denne resizer et JPEG til max 250x150 og bibeholder proportionerne:

    resize( "billede.jpg", "nytbillede.jpg", 250, 150 );

og samme med gif, men her har jeg sagt 150x150

    resize( "billede.gif", "nytbillede.gif", 150, 150 );
Avatar billede glonda Nybegynder
28. august 2006 - 12:46 #2
Der er ikke rigtig noget som virker.  den gør intet ved billedet der skal være en original og en thumb som er resized
Avatar billede shooka Nybegynder
30. august 2006 - 13:02 #3
Jeg vil anbefale JV2 Folder Gallery, det kan let tilpasses et hvert webdesign

Demo'er: http://foldergallery.jv2.net/Demo/

Download: http://foldergallery.jv2.net/Download/
Avatar billede glonda Nybegynder
30. august 2006 - 13:26 #4
Det er ikke sådan noget jeg skal bruge. har bygget mit eget cms system. og har lavet en upload funktion.

men når den uploader et billede skal den lave en kopi af det kaldet thumb_blabla.jpg som er resized
Avatar billede coderdk Praktikant
30. august 2006 - 13:28 #5
Er folderen hvor du resizer til skrivbar for webserveren?
Avatar billede glonda Nybegynder
30. august 2006 - 14:43 #6
jeg har fået det til at virke på denne måde:

if (isset($_POST["submit"])){
        $mappe="../pictures/";
           
        function skaler_jpg ($img,$w,$h)
   
        {
        $thumbnail = imagecreatetruecolor ($w, $h);
        $billede = imagecreatefromjpeg ($img);
        $billedestr = getimagesize ($img);
       
       
        imagecopyresized ($thumbnail, $billede, 0, 0, 0, 0, $w, $h, $billedestr[0], $billedestr[1]);
        imagejpeg($thumbnail, $img);
        }
       
            $billedenavn = time() . $_FILES[billedefil][name];
            $thumbname = "thmb_" . $billedenavn;
            copy($_FILES["billedefil"]["tmp_name"], $mappe.$billedenavn);
            copy($_FILES["billedefil"]["tmp_name"], $mappe.$thumbname);
       
                    $fil_at_skalere = $mappe.$thumbname;
                    skaler_jpg($fil_at_skalere, 40,60);
                    ?>
        <script>
        window.location="<?php echo $PHP_SELF; ?>";
        </script>
        <?php
}else {

           
?>



<form action="<?php echo $PHP_SELF; ?>" method="post" enctype="multipart/form-data" name="upload_form">
  <p class="overskrift"><strong>Slect Picture:</strong>   
    <input type= "file" name="billedefil">
    <input type="submit" name="submit" value="Uploade">


  </p>
</form>
<table width="73" height="66" border="0">
  <tr>
    <td><?PHP
        function upload($mappe,$hojde,$bredde,$thumbmappe){

    echo '<input type="file" name="file" ><br>';
    //echo '<input type="submit" name="Submit" value="Upload"><br>';
    if(isset($_POST['Submit']))
    {
        if($_FILES['file']['name'] != "")
        {
            if($_FILES['file']['type'] != "image/pjpeg")
            {
                echo "Forkert filtype!<br>Filen skal være af typen Jpg!";
                //echo $_FILES['file']['type'];
            }
            else
            {
                $sti = $_SERVER['DOCUMENT_ROOT']."/".$mappe."/";
                $navn = $sti.$_FILES['file']['name'];
       
                if(move_uploaded_file($_FILES['file']['tmp_name'],$navn))
                {
                    echo "Din fil er uploaded!";
                           
                }
                else
                {
                    echo "Der er sket en fejl!";
                }
           
                $filnavn = $_SERVER['DOCUMENT_ROOT']."/".$mappe."/".$_FILES['file']['name'];
               
                $str = getimagesize($filnavn);
                if($str[0] < $str[1])
                {
                    $temp = $hojde;
                    $hojde = $bredde;
                    $bredde = $temp;   
                }
                $thumb = imagecreatetruecolor($bredde,$hojde);
                $scr = imagecreatefromjpeg($filnavn);
                imagecopyresized($thumb,$scr,0,0,0,0,$bredde,$hojde,$str[0],$str[1]);
                if(imagejpeg($thumb,$thumbmappe."thumb/thumb_".$_FILES['file']['name']))
                {
                    return true;
                }
               
               
            }
        }
    }
   
    }
    }
Avatar billede glonda Nybegynder
20. september 2006 - 20:53 #7
Lukket
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