Bildgröße proportional reduzieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
alte bild
altes bild
bedingung
beitrag
bild
bilddatei
datei
entsprechende funktion
ergebnis
erzeugte bild
funktion
image
inhalt
manual
maen
moment
pixeln
referenz
resource
variant
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Sorry, aber im Moment verstehe ich gar nichts mehr
-
$real_width = 300; $real_height = 130; $new_width = 100; $r = $real_width / $new_width; $new_height = round($r * $real_height);
Ich versuche es mal zu erkl?ren:
in $real_width ist die Breite und in $real_height die H?he des Bildes gespeichert. Das sind die Ma?e des Bildes in Pixeln.
Die neue Gr??e hattest du ja vorgegeben: $new_width = 100;
Die zugeh?rige H?he ($new_height) kannst du nun berechnen. $r ist der Proportionalit?tsfaktor (Du willst ja schlie?lich die Seitenverh?ltnisse des Bildes beibehalten). Mit round() rundest du das Ergebnis, das in $new_height gespeichert wird, schlie?lich. Die Ausgabe erfolgt dann so:
echo '<img src="bild.jpg" style="width:' . $new_width . 'px;height:' . $new_height . 'px">';
Voraussetzung ist, dass du zuvor die Orginalgr??e des Bildes in den Variablen $real_width und $real_height speicherst.
Alternativ kannst du die Gr??e auch auslesen. Beachte dazu den Link von heavyraptor:http://php.net/manual/de/ref.image.php
Beitrag ge?ndert am 25.07.2006 20:36 von sandrock-jonas -
Hi,
sandrock-jonas hat es erfasst, richtig erkl?rt .
Ich dachte ich erkl?re noch das mit den Funktionen:
// Bild erzeugen mit dem bsp. Inhalt von 'image.jpg' // Wenn das mild nicht jpeg ist, kann man ja auch die entsprechende Funktion dazu benutzen $img = imagecreatefromjpeg("image.jpg"); $real_width = imagesx($img); $real_height = imagesy($img); // Masse berechnen, wie bereits erkl?rt von sandrock-jonas $new_width = 100; $r = $real_width / $new_width; $new_height = round($r * $real_height); // Neues Bild erzeugen, mit den neuen Massen $new_img = imagecreate($new_width,$new_height); // Altes Bild in neues Kopieren und Gr?sse entsprechend ?ndern imagecopy($new_img,$img,0,0,0,0,$new_width,$new_height,$real_width,$real_height); // Neues Bild Speichern als 'neu_[zeit].jpg' imagejpeg($new_img,"neu_" . time() . ".jpg"); imagedestroy($img); // Alte Bild-resource l?schen
Die Referenz der Funktionen musst du entsprechend auf php.net nachlesen.
Ich hoffe, dass mein Code funktioniert.
Alles klar?
mfg,
hr
Beitrag ge?ndert am 25.07.2006 20:47 von heavyraptor -
Nunja, ich will ja nicht die Breite 100px bestimmen,
sondern die l?ngste Seite -
Hi,
dann nimm einfach die l?ngste Seite mit max() (http://php.net/manual/de/function.max.php)!
$height = 100; $width = 200; $max = max($height,$width); // $max enth?llt jetzt $width, da $width eine gr?ssere Zahl als $height enth?llt
Alles klar?!
mfg,
hr -
Nunja, ich will ja nicht die Breite 100px bestimmen,
sondern die l?ngste Seite
Das ist mit dem Code von heavyraptor kein Problem. F?ge einfach eine if-Bedingung ein:
if ($real_width > $real_height) { $new_width = 100; $r = $real_width / $new_width; $new_height = round($r * $real_height); } else { $new_height = 100; $r = $real_height / $new_height; $new_width = round($r * $real_width); }
Anstatt von:
$new_width = 100; $r = $real_width / $new_width; $new_height = round($r * $real_height);
edit:
Da war ich wohl zu langsam.
Beitrag ge?ndert am 25.07.2006 20:52 von sandrock-jonas -
Hi,
ich nehme an, das die Variante von sandrock-jonas besser als die mit max() ist. Aber am Schluss ist sowieso alles das gleiche .
mfg,
hr -
cool ich wollte gerade ein thread aufmachen wegen der GD-bibliothek
denke das hat sich jetzt erledigt -
Nochmal zum Script von heavyraptor,
wird das erzeugte Bild dann in einer Datei auf dem Server gespeichert, oder nur zum Clienten gesendet? -
Hi,
es wird auf dem Server abgeschpeichert, das sieht man doch an der Zeile imagejpeg($new_img,"neu_" . time() . ".jpg");.
Ich w?rd jetzt einfach einmal http://php.net/manual/de/ref.image.php durchlesen, denn dann muss man nicht mehr solche Fargen stellen.
mfg,
hr -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage