Thumbnailerstellung

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

Tach zusammen also aus einem upgeloadeten Bild ein Thumbnail zu erstellen ist einfach.
Aber jetzt meine Frage wenn ich ein Thumbnail erstellen lasse aus einem Bild das
1024 * 768 ist und ich die horizontale Seitenlänge mit 128 Pixel vorgebe dann berechnet mir der Computer ja folgendes.

horizontale Seitenlänge 1024 / 128 = 8
vertikale Seitenlänge 768 / 8 = 96

somit habe ich für die vertikale Seitenlänge 96 Pixel soweit so gut.
somit ist mein Thumbnail ja dann 128 * 96 Pixel was ja dem Verhältnis 4:3 entspricht
was ich auch so haben möchte.

Wenn ich jetzt aber ein Bild habe das z.B. 800 * 700 ist und diese umrechne dann bekomme ich dieses heraus

horizontale Seitenlänge 800 / 128 = 6,25
vertikale Seitenlänge 700 / 6,25 = 112

ist logisch oder? So nun hat aber diese Thumbnail nicht mehr das Verhältnis 4:3 sondern
8:7 und das sieht dann ein wenig e aus kann mir jemand sagen ob es eine möglichkeit gibt das verhältnis mit zu berücksichtigen. So da ich das Bild dann schon vorher zurechtschneide. Ich hoffe Ihr wisst was ich meine und wo mein Problem liegt.
 
ich verstehe nicht so ganz wo dein Problem liegt. Möchtest du alle Thumbnails mit dem Verhältnis 4:3 erstellen, egal wie die Maße sind?
 
Dass heißt, du möchtest, dass das Script Bilder automatisch zurechtschneidet, wenn sie vorher nicht im Verhältniss 4:3 waren?

Ich würde um Verluste eventuell wichtiger Bildteile zu verhindern nichts abschneiden, sondern ein Bild mit einem farbigen Hintergrund erstellen und dort dann das Bild in seinem ursprünglichen Verhältniss mittig einfügen.
So entsteht wie z.B. beim Fernsehbild ein Rand auf 2 Seiten...so wird das Verhältniss auf 4:3 gesetzt.
 
Hmm ja ist nicht schlecht das mit dem rand ich muss mal schaun wie ich das jetzt mache denn irgendwie ist das ein kleines prob für mich denn es soll ja so einfach wie möglich für den benutzer sein mal schaun.

THX für eure antworten.
 
Also soetwas kann man ja auch per Script mit der GD-Lib machen lassen...

Mich hat das Thema jetzt ein wenig gepackt...hab dir mal was schönes geschrieben! :-)

Vieleicht hab ichs auch etwas übertrieben mit dem Kommentieren, aber jetzt sollte das (fast) jeder verstehen ;-)

PHP:
<?PHP
$pfad = './'; //Dateipfad unter die Bilder liegen
$bild = 'lars.gif'; //Dateiname des Ursprungsbildes
$thumb = 'lars_t.gif'; //Dateiname des Thumbnails

$resWidth = 128; //Welche Breite soll das finale Thumbnail haben?
$resHeight = 96; //Welche Höhe soll das finale Thumbnail haben?

if(!file_exists($pfad.$bild)) //Wenn die Datei nicht existiert...
	die('Die angegebene Datei existiert nicht.'); //Ausgeben einer Fehlermeldung und Beenden des Scriptes

$size = getimagesize($pfad.$bild); //Aulesen der Höhe,Breite und des Dateityps des Bildes
$width = $size['0']; //Das erste Element des Arrays $size beinhaltet die Breite
$height = $size['1']; //Das zweite Element des Arrays $size beinhaltet die Breite
$typ = $size['2'];

switch($typ)
{
	case 1: //Wenn das Bild ein GIF ist...
		$img = ImageCreateFromGIF($pfad.$bild); //Erstellen des ursprünglichen Bildes
	break;
	case 2: //Wenn das Bild ein JPG ist...
		$img = ImageCreateFromJPEG($pfad.$bild); //Erstellen des ursprünglichen Bildes
	break;
	case 3: //Wenn das Bild ein PNG ist...
		$img = ImageCreateFromPNG($pfad.$bild); //Erstellen desursprünglichen Bildes
	break;
	default: //Wenn die Datei kein GIF,JPG oder PNG ist...
		die('Sorry, das Dateiformat wird nicht unterstützt.'); //Ausgeben einer Fehlermeldung und Beenden des Scriptes
	break;
}


if($width > $height) //Wenn die Breite größer ist als die Höhe...
{
	$thumbWidth = $resWidth; //Die Breite steht fest
	$div = $width / $thumbWidth; //Errechnen des Divisors
	$thumbHeight = $height / $div; //Errechnen der Höhe
	
	$xAnfang = 0; //Festlegen der X-Koordinate auf 0
	$yAnfang = ($resHeight - $thumbHeight) / 2; //Errechnen der Y-Koordinate an denen das temporäre Bild in das finale Thumbnail eingefügt wird
}
elseif($height > $width) //Wenn die Höhe größer ist als die Breite...
{
	$thumbHeight = $resHeight; //Die Höhe steht fest
	$div = $height / $resHeight; //Errechnen des Divisors
	$thumbWidth = $width / $div; //Errechnen der Höhe
	
	$xAnfang = ($resWidth - $thumbWidth) / 2; //Errechnen der X-Koordinate an denen das temporäre Bild in das finale Thumbnail eingefügt wird
	$yAnfang = 0; //Festlegen der Y-Koordinate auf 0
}
else //Wenn beide Seiten gleich lang sind...
{
	if($resWidth > $resHeight) //Wenn die Breite größer ist als die Höhe...
	{
		$thumbHeight = $resHeight; //Festlegen der Höhe des temporären Bildes auf die Höhe des finalen Bildes
		$thumbWidth = $resHeight; //Festlegen der Breite des temporären Bildes auf die Höhe des finalen Bildes
	}
	elseif($resHeight > $resWidth) //Wenn die Höhe größer ist als die Breite...
	{
		$thumbHeight = $resWidth; //Festlegen der Höhe des temporären Bildes auf die Breite des finalen Bildes
		$thumbWidth = $resWidth; //Festlegen der Breite des temporären Bildes auf die Breite des finalen Bildes
	}
	else //Wenn beide Seite gleich sind...
	{
		$thumbHeight = $resHeight; //Festlegen der Höhe des temporären Bildes auf die Höhe des finalen Bildes
		$thumbWidth = $resHeight; //Festlegen der Breite des temporären Bildes auf die Höhe des finalen Bildes
	}
	
	$xAnfang = ($resWidth - $thumbWidth) / 2; //Errechnen der X-Koordinate an denen das temporäre Bild in das finale Thumbnail eingefügt wird
	$yAnfang = ($resHeight - $thumbHeight) / 2; //Errechnen der Y-Koordinate an denen das temporäre Bild in das finale Thumbnail eingefügt wird
}

$tmpImg = ImageCreateTrueColor($thumbWidth,$thumbHeight); //Erstellen eines temporären Bildes um ein Thumbail des Bildes zu erstellen
ImageCopyResampled($tmpImg,$img,0,0,0,0,$thumbWidth, $thumbHeight, $width, $height); //Einfügen des Bildes in das temporäre Bilde

$resImg = ImageCreateTrueColor($resWidth, $resHeight); //Das finale Thumbnail erstellen
ImageFill($resImg, 0, 0, ImageColorAllocate($resImg,  0, 0, 0)); //Das neue Bild mit schwarz füllen
imagecopymerge($resImg,$tmpImg,$xAnfang,$yAnfang,0,0,$resWidth,$resHeight,100); //Das temporäre Bild in das Thumbnail einfügen

switch($typ)
{
	case 1: //Wenn das Bild ein GIF ist...
		ImageGIF($resImg,$pfad.$thumb); //Abspeichern des neuen Bildes
	break;
	case 2: //Wenn das Bild ein JPG ist...
		ImageJPEG($resImg,$pfad.$thumb); //Abspeichern des neuen Bildes
	break;
	case 3: //Wenn das Bild ein PNG ist...
		ImagePNG($resImg,$pfad.$thumb); //Abspeichern des neuen Bildes
	break;
}

?>
 
Zurück