Avatar billede m_bold Praktikant
02. september 2005 - 11:13 Der er 8 kommentarer og
1 løsning

resize billede ved upload

Hej.

Jeg har lavet et lille CMS, hvor man bl.a. kan uploade billeder. I den forbindelse vil jeg gerne have en funktion, der automatisk gør billedet 200px i bredden.

Dvs. uanset hvordan billedet er hos brugeren inden upload, skal det uploades som 200px bred (og selvfølgelig ikke strækkes...)

Hvordan gør jeg det?
Avatar billede dmdisco Nybegynder
02. september 2005 - 11:32 #1
// image src size
      $srcSize  = getImageSize($src);
     
      // image dest size $destSize[0] = width, $destSize[1] = height
      $srcRatio  = $srcSize[0]/$srcSize[1]; // width/height ratio
      $destRatio = $maxWidth/$maxHeight;
      if ($destRatio > $srcRatio) {
          $destSize[1] = $maxHeight;
          $destSize[0] = $maxHeight*$srcRatio;
      }
      else {
          $destSize[0] = $maxWidth;
          $destSize[1] = $maxWidth/$srcRatio;
      }
      $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
Avatar billede m_bold Praktikant
02. september 2005 - 12:07 #2
Ja jeg har ændret lidt på det, for at få det til at virke, men nu har jeg gjort plads til billedet i $destImage. Hvordan gemmer jeg så billedet igen, så jeg kan kopiere det ind på serveren med en copy(xx,xx);

// image src size
            $srcSize  = getImageSize("../pics/{$_FILES['filnavn']['name']}");
            $maxWidth = 200;
            $maxHeight = 600;
            // image dest size $destSize[0] = width, $destSize[1] = height
            $srcRatio  = $srcSize[0]/$srcSize[1]; // width/height ratio
            $destRatio = $maxWidth/$maxHeight;
            if ($destRatio > $srcRatio) {
                $destSize[1] = $maxHeight;
                $destSize[0] = $maxHeight*$srcRatio;
            }
            else {
                $destSize[0] = $maxWidth;
                $destSize[1] = $maxWidth/$srcRatio;
            }
            $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
Avatar billede dmdisco Nybegynder
02. september 2005 - 12:59 #3
hov du får lige resten af funktionen

function image_resize($src,$dest,$maxWidth,$maxHeight,$quality=100) {
  if (file_exists($src)  && isset($dest)) {
      // path info
      $destInfo  = pathInfo($dest);
     
      // image src size
      $srcSize  = getImageSize($src);
     
      // image dest size $destSize[0] = width, $destSize[1] = height
      $srcRatio  = $srcSize[0]/$srcSize[1]; // width/height ratio
      $destRatio = $maxWidth/$maxHeight;
      if ($destRatio > $srcRatio) {
          $destSize[1] = $maxHeight;
          $destSize[0] = $maxHeight*$srcRatio;
      }
      else {
          $destSize[0] = $maxWidth;
          $destSize[1] = $maxWidth/$srcRatio;
      }
     
      // path rectification
      if ($destInfo['extension'] == "gif") {
          $dest = substr_replace($dest, 'jpg', -3);
      }
     
      // true color image, with anti-aliasing
      $destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
      //imageAntiAlias($destImage,true);
     
      // src image
      switch ($srcSize[2]) {
          case 1: //GIF
          $srcImage = imageCreateFromGif($src);
          break;
         
          case 2: //JPEG
          $srcImage = imageCreateFromJpeg($src);
          break;
         
          case 3: //PNG
          $srcImage = imageCreateFromPng($src);
          break;
         
          default:
          return false;
          break;
      }
     
      // resampling
      imageCopyResampled($destImage, $srcImage, 0, 0, 0, 0,$destSize[0],$destSize[1],$srcSize[0],$srcSize[1]);
     
      // generating image
      switch ($srcSize[2]) {
          case 1:
          case 2:
          imageJpeg($destImage,$dest,$quality);
          break;
         
          case 3:
          imagePng($destImage,$dest);
          break;
      }
      return true;
  }
  else {
      return false;
  }
}
Avatar billede m_bold Praktikant
02. september 2005 - 14:33 #4
Jeg får en "siden kan ikke vises".
Ved ikke om jeg kalder funktionen rigtigt?:

$place = "../pics/{$_FILES['filnavn']['name']}";
$newDestination = "../pics/{$_FILES['filnavn']['name']}ny";           
           
image_resize($place,$newDestination,200,600,$quality=100);
Avatar billede m_bold Praktikant
02. september 2005 - 14:42 #5
fejl: intern HTTP 500-serverfejl.

Jeg har B-one, kan det have noget at gøre med at "safe mode" er slået til?
Avatar billede m_bold Praktikant
04. september 2005 - 21:33 #6
Ingen der kan hjælpe videre her?
Avatar billede dmdisco Nybegynder
05. september 2005 - 17:55 #7
prøv
image_resize($place,$newDestination,200,600);
eller
image_resize($place,$newDestination,200,600,100);
Avatar billede dmdisco Nybegynder
05. september 2005 - 17:56 #8
hmm burde forresten ikke være det der var problemet men med 500 fejl lyder det til at være dit webhotel den er gal med
Avatar billede m_bold Praktikant
16. september 2005 - 21:52 #9
Jeg kunne ikke få det til at virke, så lukker....
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