Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Image Seitenverhältnis [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Image Seitenverhältnis


 
Prominenter
13-12-2011, 13:09 
 
Hi@all

function resizeImage($ImagePath,$Breite_Max,$Hoehe_Max)
{
$size=getimagesize($ImagePath);
//Verkleinere Bild unter Beibehalt des Seitenverhältnisses
if($size[0] == $size[1])
{
$neueBreite = $Breite_Max;
$neueHoehe = $Hoehe_Max;
}
elseif ($size[0] < $size[1])
{
//Wenn Breite kleiner als Höhe
$neueHoehe = $Hoehe_Max;
$neueBreite = $size[0]*$neueHoehe/$size[1];
}
else
{
//wenn Höhe kleiner als Breite
$neueBreite = $Breite_Max;
$neueHoehe = $size[1]*$neueBreite/$size[0];
}
return array($neueBreite, $neueHoehe);
}

Ich habe eine maximale Anzeigefläche von 320 x 240 pix
Nun möcht ich das jedes Bild, egal wie groß, in Abhängigkeit seiner eigenen Größe darin angezeigt wird ohne Verzerrung, aber irgendwie macht es mein Code nicht, also es muss nicht so groß sein wie die Anzeigefläche selbst, sondern darin angezeigt werden, also wenn breiter dann eben maximalbreit, höhe kann dann kleiner sein, und eben wenn höher, dann eben maxHöhe und breite kann kleiner sein.

Ich übergebe das Bild, die MaxBreite 320 und die MaxHoehe 240
resizeImage($bild01,320,240);
Im <img> setze ich dann per style="width: $neueBreite; height:$neueHoehe;"


#EDIT:
Hab den Fehler gefunden, hatte bei der style-Angabe 'px' vergessen, also: style="width: ".$neueBreite."px; height:".$neueHoehe."px;"

Jetzt aber noch eine andere Frage dazu.
Kann ich gleich das Funktionsergebnis in die style anweisung schreiben, also: also: style="width: ".resizeImage($ImagePath,$Breite_Max,$Hoehe_Max)[0]."px; height:".resizeImage($ImagePath,$Breite_Max,$Hoehe_Max)[1]."px;"

Aber das scheint nicht zu funktionieren, auch die Ausgabe: echo resizeImage($ImagePath,$Breite_Max,$Hoehe_Max)[0] gibt mir einen Fehler (Parse error: syntax error, unexpected '[', expecting ',' or ';' in ...) zurück

Thx@all

 
h3ll
13-12-2011, 13:57 
 
Deine Funktion tut nicht das, was sie sagt. Also das stimmt hinten und vorne nicht.

 
Prominenter
13-12-2011, 14:08 
 
Deine Funktion tut nicht das, was sie sagt. Also das stimmt hinten und vorne nicht.

Hä???. Doch tut sie !!!

 
h3ll
13-12-2011, 14:10 
 
Nein. Die Funktion heißt "resizeImage". Aber rauskommen tut ein Array mit Zahlen und kein Image. Ich als Programmierer wäre dann verwundert.

 
Prominenter
13-12-2011, 14:26 
 
Nein. Die Funktion heißt "resizeImage". Aber rauskommen tut ein Array mit Zahlen und kein Image. Ich als Programmierer wäre dann verwundert.

Äh, ja, da hast du natürlich recht, also werde ich die Funktion noch umbenennen in berechneNeueGroesse()

OK, Aber nun noch mal zur Frage.

Warum geht: echo function()[0] nicht, ich muss erst $ergebnis= function() schreiben und dann echo $ergebnis[0].

THX@all

 
h3ll
13-12-2011, 14:35 
 
Das geht erst ab PHP 5.4

Aber was geht ist:
class ImageSize {
public $x = 0;
public $y = 0;
}function doubleImageSize(ImageSize $size) {
$newSize = new ImageSize();
$newSize->x = $size->x * 2;
$newSize->y = $size->y * 2;
return $newSize;
}$imageSize = new ImageSize();
$imageSize->x = 320;
$imageSize->y = 240;

echo doubleImageSize($imageSize)->x;
// 640

echo doubleImageSize($imageSize)->y;
// 480

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:44 Uhr.