kostenloser Webspace werbefrei: lima-city


Bildgröße proportional reduzieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Hallo,
    ich w?rde gerne von dem Bild $bild die gr??e ?ndern.
    Und zwar soll die l?ngste Seite 100px gro? werden. die k?rzere soll sich dem dann proportional anpassen.
    Das ergebnis soll dann wieder in der original-bilddatei gespeichert werden.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi,

    also ich kann dir sagen, wie man die Gr?sse entsprechend berechnen muss:

    $real_width  = 300;
    $real_height = 130;
    
    $new_width = 100;
    
    $r = $real_width / $new_width;
    $new_height = round($r * $real_height);


    Den Rest kannst du ganz einfach unter http://php.net/manual/de/ref.image.php ablesen.

    mfg,
    hr
  4. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Sorry, aber im Moment verstehe ich gar nichts mehr:confused::confused::confused:
  5. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.

    $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
  6. Hi,

    sandrock-jonas hat es erfasst, richtig erkl?rt :biggrin:.

    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
  7. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Nunja, ich will ja nicht die Breite 100px bestimmen,
    sondern die l?ngste Seite
  8. 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
  9. sandrock-jonas

    Kostenloser Webspace von sandrock-jonas

    sandrock-jonas hat kostenlosen Webspace.


    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
  10. Hi,

    ich nehme an, das die Variante von sandrock-jonas besser als die mit max() ist. Aber am Schluss ist sowieso alles das gleiche :biggrin:.

    mfg,
    hr
  11. n*t

    cool ich wollte gerade ein thread aufmachen wegen der GD-bibliothek :biggrin:

    denke das hat sich jetzt erledigt
  12. Autor dieses Themas

    speedtouch92

    Kostenloser Webspace von speedtouch92

    speedtouch92 hat kostenlosen Webspace.

    Nochmal zum Script von heavyraptor,
    wird das erzeugte Bild dann in einer Datei auf dem Server gespeichert, oder nur zum Clienten gesendet?
  13. 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
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!