Probleme mit Imageresize GDLib
Andre
- php
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é
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
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
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
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