Andre: Probleme mit Imageresize GDLib

Hi,
kann mir bitte wer helfem ich habe hier einen Code zum kopieren und resizen eines bildes.
leider bekomme ich ab und an immer ein bild, das die max_breite überschreitet, z.b. mit 178x194px... wie kann das sein? Kann mir bitte jemand helfen den fehler zu finden? Danke
Mein Code:

  
$breite_max = 164;  
$hoehe_max = 194;  
    		  
$size=getimagesize($path);  
if($size[2]){  
$imagetype = $size[2];  
$breite=$size[0];  
//die($breite);  
$hoehe=$size[1];  
  
if($breite < $hoehe){  
        $neueHoehe = $hoehe_max;  
        $neueBreite = intval($breite*$neueHoehe/$hoehe);  
        }else{  
        $neueBreite = $breite_max;  
        $neueHoehe = intval($hoehe*$neueBreite/$breite);  
        }  
        switch($imagetype)  {  
		case 1: // GIF  
       		$image = imagecreatefromgif($path);  
      		break;  
  	default:  
  		 die('Unsupported imageformat');  
  
               }  
$neuesBild=imageCreateTrueColor($neueBreite,$neueHoehe);                  imagecopyresampled($neuesBild,$image,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);  
  

Grüße
André

  1. Hi,

    leider bekomme ich ab und an immer ein bild, das die max_breite überschreitet, z.b. mit 178x194px... wie kann das sein?

    Dadurch, dass du falsch herum die neue kleinere Seite berechnest.
    In der Schule nicht aufgepasst, oder nicht in der Lage korrekt umzustellen ...?

    if($breite < $hoehe){
            $neueHoehe = $hoehe_max;
            $neueBreite = intval($breite*$neueHoehe/$hoehe);
            }else{
            $neueBreite = $breite_max;
            $neueHoehe = intval($hoehe*$neueBreite/$breite);

    Du musst hier jeweils „mal altes x, durch neues x“ rechnen - machst es aber andersherum.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      Du musst hier jeweils „mal altes x, durch neues x“ rechnen - machst es aber andersherum.

      Problem ist nur: es reicht nicht, die jeweils grössere Seite auf grosses Maximum zu setzen und durch den Faktor zu teilen. Er muss anschliessend auch überprüfen, ob die kurze Seite das kleine Maximum nicht überschreitet. Wenn doch muss er die Berechnung neu machen: kurze Seite auf kleines Maximum setzen, grössere Seite ist dann kurze Seite mal Faktor.

      $f = ($width > $height)? $width / $height : $height / $width;

      Oh-oh, wenn das mal gut ging nach dem leckeren Chardonnay...

      Gruesse, Joachim

      --
      Am Ende wird alles gut.
      1. Hi,

        Problem ist nur: es reicht nicht, die jeweils grössere Seite auf grosses Maximum zu setzen und durch den Faktor zu teilen. Er muss anschliessend auch überprüfen, ob die kurze Seite das kleine Maximum nicht überschreitet.

        Stimmt.

        Wenn doch muss er die Berechnung neu machen

        Nah ... wer will denn noch mal neu rechnen?

        Beide Faktoren ermitteln - Breite durch maximale Breite, Höhe durch maximale Höhe - und von den beiden dann das Maximum ermitteln, und Breite und Höhe dadurch teilen.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hi,

          Beide Faktoren ermitteln - Breite durch maximale Breite, Höhe durch maximale Höhe - und von den beiden dann das Maximum ermitteln, und Breite und Höhe dadurch teilen.

          Gibs zu, Du hattest vorher keinen Wein getrunken ;-)

          Gruesse, Joachim

          --
          Am Ende wird alles gut.