Maximale Bildergrösse festlegen

Status
Nicht offen für weitere Antworten.

Johnnii360

Erfahrenes Mitglied
Grüsse Euch und nochmal ein gesundes neues! :)

Und zwar hab ich hier ein schönes Script zum erstellen von Thumbnails.

Die Thumbnailfunctions:
PHP:
// Tumbnail erstellen
function thumb($file, $save, $width, $height, $prop = TRUE) {
// Requires GD-Lib > 2.0
// Ist $prop=TRUE, so werden die Proportionen des Bildes
// auch im Thumbnail eingehalten

@unlink($save);
$infos = @getimagesize($file);
if($prop) {
    // Proportionen erhalten
    $iWidth = $infos[0];
    $iHeight = $infos[1];
    $iRatioW = $width / $iWidth;
    $iRatioH = $height / $iHeight;
    if ($iRatioW < $iRatioH)
    {
    $iNewW = $iWidth * $iRatioW;
    $iNewH = $iHeight * $iRatioW;
        } else {
        $iNewW = $iWidth * $iRatioH;
        $iNewH = $iHeight * $iRatioH;
        } // end if
    } else {
        // Strecken und Stauchen auf Größe
        $iNewW = $width;
        $iNewH = $height;
    }

    if($infos[2] == 2) {
        // Bild ist vom Typ jpg
        $imgA = imagecreatefromjpeg($file);
        $imgB = imagecreatetruecolor($iNewW,$iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
        $iNewH, $infos[0], $infos[1]);
			
		$imgWatermark = imagecreatefrompng("../../images/watermark.png");
		imagecopy($imgB, $imgWatermark, 5, 5, 0, 0, 175, 12);
		
        imagejpeg($imgB, $save);
    } elseif($infos[2] == 3) {
        // Bild ist vom Typ png
        $imgA = imagecreatefrompng($file);
        $imgB = imagecreatetruecolor($iNewW, $iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
        $iNewH, $infos[0], $infos[1]);
		
		$imgWatermark = imagecreatefrompng("../../images/watermark.png");
		imagecopy($imgB, $imgWatermark, 5, 5, 0, 0, 175, 12);
		
        imagepng($imgB, $save);
    } else {
        return FALSE;
    }
}

Wäre cool, wenn er auch aus BMP, GIF und PNG Thumbs machen würde. Das habe ich nie hinbekommen!

Dieses Script hier fügt dem Bild unser Wasserzeichen zu:
PHP:
if(!file_exists("".$_SERVER["DOCUMENT_ROOT"]."/images/memberpics/ofnmp_".$pic[file]."")){

// Thumbnails erstellen
// Quelldatei
$from = "../../images/memberpics/".$pic[file]."";
// Ziel 1+2
$to = "../../images/memberpics/ofnmp_".$pic[file]."";

// Bildgrösse
$groeße = getimagesize("../../images/memberpics/".$pic[file]."");

// Funktionsaufruf mit Einbehaltung der Proportionen
thumb($from, $to, $groeße[0], $groeße[1], TRUE);
}

Was ich finde, ist, dass ich noch ein Bild erstellen muss, da er mir das Original nicht ändern will. Dann ist das Bild leer oder nicht da und ich möchte nicht 3 Dateien haben sondern nur noch 2. Also Original und Thumbnail. Hab ich auch nie hinbekommen!

Das ist mein erstes Problem wo ich Hilfe brauche, und das Zweite ist, dass ich gerne eine maximale breite von 900 erlauben möchte und das die Höhe dann automatisch gewählt/erkannt wird, sodass das Bild nicht gestaucht oder gestrecht ist! :)

Ich hoffe ihr versteht wa sich meine? :)

Würde mich über eure Hilfe sehr freuen! :)
Danke schonmal im Voraus! ;-)
 
Falls du dir schonmal die Mühe gemacht hast das Script genauer zu
betrachten hättest du erspät, dass es schon PNG-fähig ist!
Hättest du einen zweiten Blick gewaagt und noch zusätzlich einen
Gedankengang geopfert wär dir aufgefallen, dass man dieses Script
ziemlich einfach auf GIF erweitern kann.
Was BMP angeht gibt es denk ich mit der GD Lib keine Lösung, da
müsste man mit ImageMagick ran.

PHP:
// Tumbnail erstellen
function thumb($file, $save, $width, $height, $prop = TRUE) {
// Requires GD-Lib > 2.0
// Ist $prop=TRUE, so werden die Proportionen des Bildes
// auch im Thumbnail eingehalten

@unlink($save);
$infos = @getimagesize($file);
if($prop) {
    // Proportionen erhalten
    $iWidth = $infos[0];
    $iHeight = $infos[1];
    $iRatioW = $width / $iWidth;
    $iRatioH = $height / $iHeight;
    if ($iRatioW < $iRatioH)
    {
    $iNewW = $iWidth * $iRatioW;
    $iNewH = $iHeight * $iRatioW;
        } else {
        $iNewW = $iWidth * $iRatioH;
        $iNewH = $iHeight * $iRatioH;
        } // end if
    } else {
        // Strecken und Stauchen auf Größe
        $iNewW = $width;
        $iNewH = $height;
    }
    if($infos[2] == 1) {
        // Bild ist vom Typ gif
        $imgA = imagecreatefromgif($file);
        $imgB = imagecreatetruecolor($iNewW,$iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
        $iNewH, $infos[0], $infos[1]);
            
        $imgWatermark = imagecreatefrompng("../../images/watermark.png");
        imagecopy($imgB, $imgWatermark, 5, 5, 0, 0, 175, 12);
        
        imagegif($imgB, $save);
    elseif($infos[2] == 2) {
        // Bild ist vom Typ jpg
        $imgA = imagecreatefromjpeg($file);
        $imgB = imagecreatetruecolor($iNewW,$iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
        $iNewH, $infos[0], $infos[1]);
            
        $imgWatermark = imagecreatefrompng("../../images/watermark.png");
        imagecopy($imgB, $imgWatermark, 5, 5, 0, 0, 175, 12);
        
        imagejpeg($imgB, $save);
    } elseif($infos[2] == 3) {
        // Bild ist vom Typ png
        $imgA = imagecreatefrompng($file);
        $imgB = imagecreatetruecolor($iNewW, $iNewH);
        imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
        $iNewH, $infos[0], $infos[1]);
        
        $imgWatermark = imagecreatefrompng("../../images/watermark.png");
        imagecopy($imgB, $imgWatermark, 5, 5, 0, 0, 175, 12);
        
        imagepng($imgB, $save);
    } else {
        return FALSE;
    }
}
 
_voodoo hat gesagt.:
Falls du dir schonmal die Mühe gemacht hast das Script genauer zu
betrachten hättest du erspät, dass es schon PNG-fähig ist!
Schau mal wann ich den Beitrag verfasst habe! ;)

_voodoo hat gesagt.:
Hättest du einen zweiten Blick gewaagt und noch zusätzlich einen
Gedankengang geopfert wär dir aufgefallen, dass man dieses Script
ziemlich einfach auf GIF erweitern kann.
Sorry, habs nie hinbekommen. Trotzdem danke!

_voodoo hat gesagt.:
Was BMP angeht gibt es denk ich mit der GD Lib keine Lösung, da
müsste man mit ImageMagick ran.
Schade!

Wie siehts denn mit dem anderen Prob aus, kennste da keine Lösung?
 
Du verstehst mich falsch!

Wenn das Bild grösser als 900 Pixel ist, dann soll es beim erzeugen (und nicht beim auslesen) auf 900 (VON DER BREITE :)) verkleinert werden! ;)
 
Du hast ein fertiges Script und erwartest dass wir es dir anpassen, was absolut nicht der Sinn dieses Forum's ist.
 
Du wirst es doch wohl hinbekommen mittels
[phpf]imagesx[/phpf] und [phpf]imagesy[/phpf] auszulesen wie groß das
alte Bild ist und es dementsprechend mittels
[phpf]imagecopyresized[/phpf] zu verkleinern, oder?

Bisschen Mathematik muss man schon beherrschen als
Programmierer :)
 
Aber ein wenig Grundrechnen sollte jeder Mensch (der normalerweise
mind. zehn Jahre die Schule besucht hat) beherrschen.
 
Status
Nicht offen für weitere Antworten.
Zurück