Rafael: PHP-Matheaufgabe...

... ich brüte seit geraumer Zeit über einer Matheaufgabe für eine Bildgalerie: Wenn ich ein Bild mit einer Breite von 200 habe möchte ich links und rechts einen entsprechenden (gleichgroßen) Rand setzen (per margin-left und -right).
Die Originalbilder sind aber alle unterschiedlich breit und weit.
Mein Kode sieht folgendermaßen aus:

<img src="".$temppic."" alt="Bild ".$y."" class="galeriebild"";
  $temp_size = getimagesize($temppic);
  if ($temp_size[0]>=$temp_size[1]) {
  $content.= " width="200" style="";
  $scal_size = ($temp_size[1]/200);
  $margin = (int)(200-(($temp_size[0]/$scal_size)/2));
  $content.= "margin-top: ".$margin."px; margin-bottom: ".$margin."px;"";
  }
  else {
  $content.= " height="200" style="";
  $scal_size = ($temp_size[0]/200);
  $margin = (int)(200-(($temp_size[1]/$scal_size)/2));
  $content.= "margin-left: ".$margin."px; margin-right: ".$margin."px;"";
  }
  $content.= " />

Irgendwo habe ich einen Denkfehler. Kann mir jemand helfen?

  1. Moin!

    Durch den Code steige ich ehrlich gesagt nicht durch. Aber wenn Du in der Breite B etwas der Breite b mittig plazieren willst, dann ist der linke Rand rl= int( (B - b) / 2 ) und rechts rr= B - b - rl.

    -- Skeeve

    1. Rand B und Rand A sollen aber gleichgroß sein.
      Ich will viele Bilder nebeneinander platzieren und die sollen jeweils gleich viel Platz einnehmen...

      Wenn ein Bild nun 1000 Pixel breit ist, dann rechne ich es auf 200 Pixel runter und die Höhe mit 800 Pixeln soll dann eben entsprechend sinken.
      Das wäre bei mir:

      var = Breite / 200

      RandGesamt = Höhe / var

      Rand = RandGeamt / 2

      aber irgendwo ist ein Denkfehler...

      1. Moin!

        Rand B und Rand A sollen aber gleichgroß sein.

        Einer von beiden muß aber ein Pixel größer sein, wenn die Bildbreite ungerade und < 200 ist.

        Wenn ein Bild nun 1000 Pixel breit ist, dann rechne ich es auf 200 Pixel runter

        Ahhh! Rand oben und Unten bei Bildern breiter als 200!

        var = Breite / 200

        quotient= 200 / Breite

        RandGesamt = Höhe / var

        RandGesamt= Höhe / quotient

        Rand = RandGeamt / 2

        Richtig.

        Allerdings, wie oben schon beschrieben... Was ist mit ungeradem RandGesamt...

        -- Skeeve

        1. der wird über das PRefix (int) weggerundet. Ganz so genau muss es nicht.

          1. Bzw: Klappt nicht... ich bekomme negative Werte, warum auch immer....

            1. Moin!

              Bzw: Klappt nicht... ich bekomme negative Werte, warum auch immer....

              Gib mal Beispieldaten.

              -- Skeeve

              1. Problem ist behoben. Trotzdem danke! Hatte nen simplen Tippfehler...