Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem mit Foto Upload von Hochformat auf Querformat

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Problem mit Foto Upload von Hochformat auf Querformat

    Hallo zusammen,

    ich hab vor einiger Zeit für einen Kunden ein Fotoupload erstellt, dabei müssen die Fotos alle auf exakt 420x300 Pixel verkleinert werden weil sie später in einer Flashanimation erscheinen. Fotos in Hochformat werden dabei auf einen farbigen Hintergrund kopiert.

    Hier der Code
    PHP-Code:
       //Größe und position bestimmen
          //Wenn Bild zu groß
                
    if(($breite $bgbreite) OR ($hoehe $bghoehe)) {
            
    //Breitformat
                    
    if($breite $hoehe) {
                        
    $neuehoehe intval($hoehe $bgbreite $breite);
              
    $neuebreite $bgbreite;
                        }
            
    //Hochformat
                    
    else {
                        
    $neuebreite intval($breite $bghoehe $hoehe);
              
    $neuehoehe $bghoehe;
              
    $neuX intval(($bgbreite/2) - ($neuebreite/2));
                        }
                    }
                else {
                    
    $neuebreite $bgbreite;
                    
    $neuehoehe $bghoehe;
                    }

        
            
    // JPG verkleinern und speichern
          
    $bgbild imagecreatefromjpeg("../acp/images/gallerie_bg_".$zugang["gallerie_bg"].".jpg");
          
    $altesbild imagecreatefromjpeg($temp_file);
          
    imagecopyresampled($bgbild,$altesbild,$neuX,0,0,0,$neuebreite,$neuehoehe,$breite,$hoehe); 
                
    imagejpeg($bgbild,$upload_file,$fotoqualitat); 
    Das Problem liegt jetzt bei der X-Ausrichtung ($neuX). Fotos im Hochformat werden zwar richtig skaliert aber erscheinen dann später nicht mittig sondern zu weit rechts. Hier ein Beispiel:



    Das Kopieren auf den Hintergrund hatte ich zuerst mit imagecopyresized() und jetzt hab ichs auf imagecopyresampled(). Das Beipsiel ist noch mit imagecopyresized() deshalb auch die schechte Auflösung.

    Hat jemand eine Idee warum die X-Position des Hochformat-Fotos nicht richig berechnet wird? Ich hab übrigens die Berechung von $neuX mit intval() und ohne Probiert. Macht kein sichbaren unterschied.

  • #2
    Lass dir doch mal $neuX ausgeben und dazu noch alte Höhe/Breite neue Höhe/Breite und berechne mal die Werte selbst. Dann weißt du ob bei der Berechnung der Fehler liegt (sieht für mich allerdings richtig aus) oder beim Bild erstellen.

    Übrigens brauchst du intval() nur um etwas in eine Zahl zu konvertieren. Da du aber nur mit Zahlen rechnest brauchst du diese nicht nochmal in eine Zahl umwandeln. Lass also intval() weg.

    Kommentar


    • #3
      Rechnung stimmt

      Ausgabe:
      $neuX = 124
      $neuebreite = 199
      $neuehoehe = 300
      $breite = 447
      $hoehe = 300;

      Rechnung:
      447/2 - 199/2 = 124
      Stimmt.

      Und ich dachte mir es gibt keine halben Pixel deshalb verschwinden mit intval() die Nachkommastellen. Ohne intval() ist es aber auch nicht richig ausgerichtet.

      Habe das Bild mal mit einem Fotoprogramm in die mitte verschoben und bei den oben stehenden Angaben müsste die linke obere ecke des fotos bei 111px von links liegen.

      Hat jemand noch eine Idee?

      Kommentar


      • #4
        Ähm wenn du eine Breite von 420 haben willst, dann müsstest du doch

        420/2 - bildbreite/2 rechnen um an die Linke kante zu kommen?

        Kommentar


        • #5
          Stimmt!!! Da war wohl noch der falsche Wert eingetragen weil ich die Größe ändern musste. Also dann hat sich das hier erledigt es funktioniert jetzt.

          Vielen Dank

          Kommentar


          • #6
            ich glaub ich verschieb das mal ins Einsteiger-Forum

            Kommentar

            Lädt...
            X