Image beim Resize -> SCHNEIDEN

deintag85

Erfahrenes Mitglied
Halli Hallo,
des öfteren seh ich auf Seiten dynamischere Thumbnails, die nicht unbedingt die Form des Originals beibehalten. z.B. dass wenn ein Bild 4:3 ist, das Thumbnail 3:4 sein kann oder quadratisch 1:1 ...je nachdem.

Habe das auch versucht bei meinem Upload-Script zu machen indem ich einfach die Maße geändert hab. Aber leider ist das Bild dann zerquetscht. Ich möchte aber z.B. aus einem 4:3 Bild ein Quadratisches Thumbnail machen. Egal ob ein Teil dabei herausgeschnitten wird oder so. Hauptsache es ist nicht zerquetscht ^^

Wie stelle ich das an?

Mein Script sieht momentan so aus :

Code:
// Bilddaten ermitteln						
$size= GetImageSize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueBreite=200;
$neueHoehe=200;

if($size[2]==1) {
// GIF
$altesBild= imagecreatefromgif("$PicPathIn"."$bild");
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
imageGIF($neuesBild,"$PicPathOut"."thumb_"."$bild");
}
if($size[2]==2) {
// JPG
$altesBild= ImageCreateFromJPEG("$PicPathIn"."$bild");
$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe);
imagecopyresampled($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild,"$PicPathOut"."thumb_"."$bild");
}

Liebe Grüße
 
Hallo!

Ich denke mit folgender Funktion kannst du dein Problem lösen:

PHP:
cropImage(225, 165, '/path/to/source/image.jpg', 'jpg', '/path/to/dest/image.jpg');
function cropImage($nw, $nh, $source, $stype, $dest) {
	$size = getimagesize($source);
	$w = $size[0];
	$h = $size[1];
	switch($stype) {
		case 'gif':
		$simg = imagecreatefromgif($source);
		break;
		case 'jpg':
		$simg = imagecreatefromjpeg($source);
		break;
		case 'png':
		$simg = imagecreatefrompng($source);
		break;
	}
	$dimg = imagecreatetruecolor($nw, $nh);
	$wm = $w/$nw;
	$hm = $h/$nh;
	$h_height = $nh/2;
	$w_height = $nw/2;
	if($w> $h) {
		$adjusted_width = $w / $hm;
		$half_width = $adjusted_width / 2;
		$int_width = $half_width - $w_height;
		imagecopyresampled($dimg,$simg,-$int_width,0,0,0,$adjusted_width,$nh,$w,$h);
	} elseif(($w <$h) || ($w == $h)) {
		$adjusted_height = $h / $wm;
		$half_height = $adjusted_height / 2;
		$int_height = $half_height - $h_height;
		imagecopyresampled($dimg,$simg,0,-$int_height,0,0,$nw,$adjusted_height,$w,$h);
	} else {
		imagecopyresampled($dimg,$simg,0,0,0,0,$nw,$nh,$w,$h);
	}
	imagejpeg($dimg,$dest,100);
}

Quelle: http://www.findmotive.com/2006/12/13/php-crop-image/

Gruß
weissi
 
Zurück