Avatar billede dd-man Nybegynder
06. juli 2003 - 02:14 Der er 7 kommentarer og
1 løsning

Lave det ordenligt?

Jeg sidder og leger lidt med gdlib... hvis man ser på et eksempel:
http://www.bilbasen.dk/biler/private/showcar.asp?id=283792

Så ser bilen perfekt ud... altså billedet er resized godt... men.. hvordan kan man resize det på den måde?

Jeg har fundet ud af at resize til den størrelse som jeg vil.. men for at få den rigtige proportioner, skal jeg kun resize eks. X, bredde og ikke højde.

Hvis jeg gør det, og laver samme eksempel som på bilbasen.dk ender det med at min side hopper, pga. nogle billeder vil være højere end de andre...

Hvordan er det bilbasen er kommet uden om det?

Håber i forstår det, ellers skriv hvad i er i tvivl om..

På forhånd mange tak!
Avatar billede detox Nybegynder
06. juli 2003 - 02:42 #1
Mit gæt er at billedet er resized til 25% på begge leder.
Avatar billede detox Nybegynder
06. juli 2003 - 02:57 #2
Men det er min erfaring at sampling kvaliteten skal op på 100% når det drejer sig om thumbs, hvis man vil have et ordentligt resultat.
Avatar billede dd-man Nybegynder
06. juli 2003 - 03:30 #3
Ja... men det er lidt svært at forklare.. måske kan jeg lige forklare det bedre i morgen...
Avatar billede jakobsynder Nybegynder
06. juli 2003 - 03:44 #4
Du vil beholde proportionerne, men også have at alle billeder / thumbs skal være samme størrelse.
Du er nødt til også at beskære billedet.
Beskær det først, så det får proportioner der passer til det du skal bruge, resize bagefter.
Eksempel:
Du uploader billede på 1200x800px - billedet skal ende som 400x200px - du beskærer først så det bliver 1200x600px og resizer bagefter.
Avatar billede rzj Nybegynder
06. juli 2003 - 09:42 #5
her:

//Set maximum height in pixels
$maxHeight = 100;
//Set maximum width in pixels
$maxWidth = 100;
//Calculate new dimenisions
$ratioHeight = $maxHeight/$height;
$ratioWidth = $maxWidth/$width;
$ratio = min($ratioWidth, $ratioHeight);
$newWidth = $width * $ratio;
$newHeight = $height * $ratio;

/raz
Avatar billede rzj Nybegynder
06. juli 2003 - 09:49 #6
og her er hele resize() funktionen:

function reSizeImage($imageDir, $imageName, $renamedImage){
#
# Define image constants
#
define("MAXHEIGHT", 100);
define("MAXWIDTH", 100);
# Qualtity is a num between 0 - 100
define("QUALITY", 40);

# Get image data
list($width,$height,$type)= getimagesize($imageDir.$imageName);
       
# Set correct dimensions for new image
$ratioHeight = $maxHeight/$height;
$ratioWidth = $maxWidth/$width;
$ratio = min($ratioWidth, $ratioHeight);
$newWidth = $width * $ratio;
$newHeight = $height * $ratio;

# Create thumb dependent of image type
# Currently only *.JPG is supported
list($filename, $ext) = explode(".", $imageDir.$imageName);
if($ext == "jpg"){
    # Create a image in buffer from source image
    $src_img = imagecreatefromjpeg($imageDir.$imageName);
           
    # Create destination image in buffer with correct dimensions
    $dst_img = imagecreatetruecolor($newWidth,$newHeight);
           
    # Copy the image from source to destination
    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
    imagejpeg($dst_img, $imageDir.$renamedImage, $quality);
       
    # Destroy the buffers
    imagedestroy($src_img);
    imagedestroy($dst_img);
       
}else{
  error("Unsupported filetype. Only *.jpg supported in this version");
}
       
return true;       
}


Beklager kommentering er på engelsk, men det finder jeg nu engang det bedste...
/raz
Avatar billede dd-man Nybegynder
06. juli 2003 - 11:52 #7
Hej rzj.

Jeg har leget lidt med dit forslag, men synes det driller lidt... jeg tror det er fordi det er for uoverskueligt. Vil du ikke være venlig at prøve at sætte det ind i min kode i stedet for den gdlib kode jeg har?

Det jeg har her, er at jeg uploader flere billeder, og de bliver renamed til billedeID_billedeNR eks.:
14_1.jpg
14_2.jpg
14_3.jpg
14_4.jpg

og bagefter bliver det via gdlib ændret i størrelse... håber du kan hjælpe mig, sætter lidt flere points af. Tak

-------- KODE START --------
if ($_FILES['billede']) {
  $i = 0;
  $nr = 1;
    while (list($name, $value) = each($_FILES['billede']['name'])) {
      if ($value) {
        $dist = "images/upload/";
        $files = $value;
        if (eregi(".jpg$|.gif$|.jpeg$", $files)) {
          $temparr = explode(".", $files);
          $temparr[count($temparr)-2] = $sidsteID."_".$nr;
          $files = implode(".", $temparr);
          move_uploaded_file($_FILES['billede']['tmp_name'][$i], $dist . "temp_". $files);
          $destination = $dist . $files;
           
          // start-gdlib
          if (eregi(".jpg$|.jpeg$", $files)) {
            $gal_pic = str_replace(" ", "_", $_FILES['billede']['name']);
            $filnavn = "images/upload/temp_".$files;
            $pic1 = ImageCreateFromJPEG($filnavn);
            $sizeX = ImageSX($pic1);
            $sizeY = ImageSY($pic1);
            if ($sizeX > 200) {
              $newX = 200;
              $modsize = $newX / $sizeX;
              $newY = round($sizeY * $modsize);
              $pic2 = ImageCreateTruecolor($newX, $newY);
              ImageCopyResampled($pic2,$pic1, 0,0, 0,0, $newX,$newY, $sizeX,$sizeY);
            } else {
              $pic2 = ImageCreateFromJPEG($filnavn);
            }
            ImageJPEG($pic2, $destination, 100);
            ImageDestroy($pic1);
            ImageDestroy($pic2);
            unlink("images/upload/temp_".$files);
          }
          // slut-gdlib
           
          mysql_query("INSERT INTO $produkt_billeder (varenr,billede) VALUES ('$sidsteID','$destination')") or die (mysql_error());
          $nr++;
        } else {
          echo("Du har ikke sat nogle billeder til annoncen, da du ikke har valgt nogle acceptable billede-typer!<br>Klik <a href=\"java script:history.go(-1);\">her</a> for at vende tilbage annonce-indtastning");
          exit;
        }
      }
      $i++;
    }
}
-------- KODE SLUT ---------
Avatar billede dd-man Nybegynder
06. juli 2003 - 11:55 #8
Hov, nu kom jeg til at acceptere... har lavet et spørgsmål her igen til dig rzj, tak:
http://www.eksperten.dk/spm/373165
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