Avatar billede unsafe Nybegynder
02. september 2005 - 12:19 Der er 12 kommentarer og
1 løsning

Billede størrelse

Jeg er igang med en lille bruger side, hvor man blandt andet kan uplaode profil billeder.

Men da profil billederne er i forskellige størrelser ser det ikke godt ud hvis jeg eksempel sætter billedet til width="150" height="110"

Så kan man ikke så gjordt sådan at de selv finder en størrelse der er passende.

Så max breden er 220 og max højden er 220.

Jeg har virkelig brug for dette, det andet ser virkelig dumt ud og har ledt efter en løsning længe..
Avatar billede Slettet bruger
02. september 2005 - 12:34 #1
De fleste billeder følger jo faste standarder f.eks 640 x 480 pixel så du kan i et billedbehandlings-program resize alle dine billeder til samme størrelse f.eks 320 x 240 pixel
Avatar billede unsafe Nybegynder
02. september 2005 - 12:44 #2
Sider og rette alle brugers profil billeder, galleri billeder ? Nej tak
Avatar billede dmdisco Nybegynder
02. september 2005 - 13:03 #3
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 unsafe Nybegynder
02. september 2005 - 13:06 #4
Skal jeg bare indsætte det der hvor billedet skal vises?
Avatar billede dmdisco Nybegynder
02. september 2005 - 13:09 #5
nej den her laver om på størrelsen og gemmer billede som nyt men der skal ikke meget redigering til i den fuinktion til bare at vise det resized billede
Avatar billede unsafe Nybegynder
02. september 2005 - 13:48 #6
æhm :s tror ikke helt i fotstår hvad jeg mener,,,
Avatar billede dmdisco Nybegynder
02. september 2005 - 15:03 #7
hvis du bruger getImageSize() til at få width og height så kan du bare bruge lidt fra den funktion ovenover til at regne ud hvor bredt og højt billedet skal være altså:

$maxWidth = 220;
$maxHeight = 220;
$srcSize  = getImageSize($src);
$srcRatio  = $srcSize[0]/$srcSize[1];
$destRatio = $maxWidth/$maxHeight;
if ($destRatio > $srcRatio) {
          $destSize[1] = $maxHeight;
          $destSize[0] = $maxHeight*$srcRatio;
      }
      else {
          $destSize[0] = $maxWidth;
          $destSize[1] = $maxWidth/$srcRatio;
      }
print "<img src=\"$src\" width=\"$destSize[0]\" height=\"$destSize[1]\">";
Avatar billede unsafe Nybegynder
02. september 2005 - 21:09 #8
Okey, hehe

Men der kommer fejl på linje 69 hvilke er

$srcRatio  = $srcSize[0]/$srcSize[1];

Warning: Division by zero in /customers/unsafe.dk/unsafe.dk/httpd.www/ny/profil.php on line 69
Avatar billede unsafe Nybegynder
02. september 2005 - 22:11 #9
Nææ hov, nu virker det :D

<?php

$src = "images/profiles/$rs[id].jpg";
$maxWidth = 200;
$maxHeight = 200;
$srcSize  = getImageSize($src);
$srcRatio  = $srcSize[0]/$srcSize[1];
$destRatio = $maxWidth/$maxHeight;
if ($destRatio > $srcRatio) {
          $destSize[1] = $maxHeight;
          $destSize[0] = $maxHeight*$srcRatio;
      }
      else {
          $destSize[0] = $maxWidth;
          $destSize[1] = $maxWidth/$srcRatio;
      }
?>

Smid et svar dmdisco
Avatar billede dmdisco Nybegynder
03. september 2005 - 13:17 #10
oki
Avatar billede unsafe Nybegynder
03. september 2005 - 22:47 #11
Eller, hmm

Kan du ikke gøre såden at hvis billedet er mindre end de angivet px's bliver det bare dens normale størrelse?
Avatar billede dmdisco Nybegynder
04. september 2005 - 17:43 #12
noget i den her stil så?

$src = "images/profiles/$rs[id].jpg";
$maxWidth = 200;
$maxHeight = 200;
$srcSize  = getImageSize($src);
if ($srcSize[0] < $maxWidth && $srcSize[1] < $maxHeight) {
    $destSize[0] = $srcSize[0];
    $destSize[1] = $srcSize[1];
} else {
$srcRatio  = $srcSize[0]/$srcSize[1];
$destRatio = $maxWidth/$maxHeight;
      if ($destRatio > $srcRatio) {
          $destSize[1] = $maxHeight;
          $destSize[0] = $maxHeight*$srcRatio;
      }
      else {
          $destSize[0] = $maxWidth;
          $destSize[1] = $maxWidth/$srcRatio;
      }

}
Avatar billede unsafe Nybegynder
05. september 2005 - 07:23 #13
Jaa (: mange tak ;)
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