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
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.
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 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.
Kommentar