Avatar billede simotho Nybegynder
15. november 2009 - 19:28 Der er 2 kommentarer og
1 løsning

Mit billedeupload resizer ikke som det skal

Hejsa :)
Sidder med et billede upload system, som ikke helt fungerer som jeg vil ha det...

Den uploader og resizer som den skal, MEN alligevel ikke.
Pga. har sat den til at resize til 150x165, men den vælger at resize til sine egne mål, har ingen idé om hvorfor.

Det er et som jeg har fundet her på eksperten og redigeret lidt i, så kender ikke så meget til scriptet.

Koden:

<?php
    session_start();
    include("../../includes/connect.php");
    //SETTINGS
    $uploadDir        = 'upload/'; //Bibliotek, hvor filer uploades til - husk chmod 777
    $allowedFileTypes = array('jpg','gif','png'); //Hvilke filer vil vi acceptere bliver uploadet?
    //THUMBS SETTINGS
    $thumbDir        = 'thumbs/'; //Bibliotek, hvor thumbs gemmes - husk chmod 777
    $thumbPrefix      = 'thumb_';  //Hvad skal tilføjes til originalt filnavn?
    $uploadRand      =  rand(600,100000);
    $thumbHeight      = 165;      //Thumb højde
    $thumbWidth      = 150;      //Thumb bredde
    $thumbQuality    = 100;        //Kvalitet af thumb, kan være fra 0 - dårligt til 100 - bedst

    //Funktioner som bruges:
    function getExtension($filename){
        return strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) );
    }

    function resize( $filename, $newfilename, $maxw, $maxh, $quality=100 )
    {
      $extension = getExtension($filename);
      switch($extension)
      {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
          $srcim = imagecreatefromjpeg( $filename );
          break;
        case 'gif':
          $srcim = imagecreatefromgif( $filename );
          break;
        case 'png':
          $srcim = imagecreatefrompng( $filename );
          break;
        default:
          return false;
      }
      $ow = imagesx( $srcim );
      $oh = imagesy( $srcim );
      $wscale = $maxw / $ow;
      $hscale = $maxh / $oh;
      $scale = min( $hscale, $wscale );
      $nw = round( $ow * $scale, 0 );
      $nh = round( $oh * $scale, 0 );
      $dstim = imagecreatetruecolor( $nw, $nh );
      imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
      switch($extension)
      {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
          imagejpeg( $dstim, $newfilename, $quality );
          break;
        case 'gif':
          imagegif( $dstim, $newfilename );
          break;
        case 'png':
          $png_q = floor( abs( $quality / 10 - 9.9 ) );
          imagepng( $dstim, $newfilename, $png_q );
          break;
        default:
          return false;
      }
      imagedestroy( $dstim );
      imagedestroy( $srcim );
      return file_exists($newfilename);
    }

    //Er der trykket på Upload file knappen?
    if(isset($_POST['myUpload']))
    {
      //Har vi en fil?
      if(is_uploaded_file($_FILES['myFile']['tmp_name']))
      {
        //Filendelse
        $extension = getExtension($_FILES['myFile']['name']);

        //Er filen en af de filer vi gerne vil have?
        if(in_array($extension,$allowedFileTypes))
        {
          //Vi flytter filen fra tmp til vores UPLOADDIR
          if(move_uploaded_file($_FILES['myFile']['tmp_name'],$uploadDir . $uploadRand . basename($_FILES['myFile']['name'])))
          {
              if(resize($uploadDir . $uploadRand . basename($_FILES['myFile']['name']), $thumbDir . $thumbPrefix . $uploadRand . basename($_FILES['myFile']['name']), $thumbWidth, $thumbHeight, $thumbQuality)){
                  echo '<h3 class="fbgreenbox">('.$uploadRand.''.basename($_FILES['myFile']['name']).') uploadet og resized</h3>';
                  $img_normal = $uploadRand . basename($_FILES['myFile']['name']);
                  $sid = $_SESSION['id'];
                  $img_small  = $thumbPrefix . $uploadRand . basename($_FILES['myFile']['name']);
                  mysql_query("UPDATE `users` SET `img` = '".$img_normal."', `img_small` = '".$img_small."' WHERE id = '$sid'")or die(mysql_error());

              }else{
                echo '<h3 class="fberrorbox">Dit billede er uploadet</h3>';
            }
          }
          else
          {
            echo '<h3 class="fberrorbox">Fejl - Ikke muligt at uploade: '.basename($_FILES['myFile']['name']).'</h3>';
          }
        }
        else
        {
          echo '<h3 class="fberrorbox">Forkert filtype, godkendte filtyper: ('.implode(',',$allowedFileTypes).')</h3>';
        }
      }
      else
      {
        echo '<h3 class="fberrorbox">Du har ikke uploadet et billede<h3>';
      }
    }

    //Vores form
    echo '<form action="new_profilepic.php" method="post" enctype="multipart/form-data">';
    echo '<p>Accepterede filtyper: ('.implode(',',$allowedFileTypes).'):</p> <input type="file" name="myFile"><br />';
    echo '<input type="submit" name="myUpload" value="Upload Fil">';
    echo '</form>';

    ?>
Avatar billede simotho Nybegynder
15. november 2009 - 19:53 #1
Lukker, har klaret sagen :)
Avatar billede Slettet bruger
15. november 2009 - 21:19 #2
Hvad var fejlen?
Avatar billede mibu Nybegynder
15. november 2009 - 21:52 #3
Ja! Det kunne jeg da også godt tænke mig at vide :-)
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