S soocks Medlem sedan feb. 2002 40 inlägg Frågan 24 jan. 2005 13:22 #1 jag håller på med ett script som ska förminska bilder till thumbnails, för användning i en webshop.
saken är den att thumbnailsen ska ha storleken 130x110 och är bredden/höjden mindre än detta ska motivet placeras utifrån mitten och resten fyllas med vit färg.
så lång har jag också kommit, förutom att den vita färgen är svart och skapar antingen två svarta fält på sidorna av motivet eller ovan och under.
kika på detta så kanske ni förstår bättre :)
ska bli >>
ska bli >>
har försökt med lite olika metoder att få dessa fält vita istället för svarta, men utan att lyckas. det närmaste jag kommit är med att använda fyllda rektanglar "över" det svarta, men det känns osmidigt.
finns det någon smidig lösning tro?
tack på förhand!
edit: ni får koden också :)
$srcImg = "bild.jpg";
$srcInfo = GetImageSize($srcImg);
$dstWidth = 130;
$dstHeight = 110;
if ($srcInfo[1] <= $srcInfo[0]) {
$srcX = 0;
$srcY = round(($srcInfo[1] - $srcInfo[0])/2);
$srcW = $srcInfo[0];
$srcH = $srcInfo[0];
} else {
$srcX = round(($srcInfo[0] - $srcInfo[1])/2);
$srcY = 0;
$srcW = $srcInfo[1];
$srcH = $srcInfo[1];
}
header ("Content-type: image/jpeg");
$im_src = imagecreatefromjpeg($srcImg);
$img_thumb = imageCreateTruecolor($dstWidth, $dstHeight);
imagecopyresampled ($img_thumb, $im_src, 0, 0, $srcX, $srcY, $dstWidth, $dstHeight, $srcW, $srcH);
imagejpeg($img_thumb);
ImageDestroy($img_thumb);
ImageDestroy($im_src);
S soocks Medlem sedan feb. 2002 40 inlägg verkar löst det själv, vet inte hur pass smidigt dock, men det funkar..
$srcImg = "bild.jpg";
$srcInfo = getimagesize($srcImg);
$dstWidth = 130;
$dstHeight = 110;
if ($srcInfo[1] <= $srcInfo[0]) {
$srcX = 0;
$srcY = round(($srcInfo[1] - $srcInfo[0])/2);
$srcWidth = $srcInfo[0];
$srcHeight = $srcInfo[0];
$fillX = $dstWidth;
$fillY = $srcY * -($dstHeight / $srcHeight);
$fillXb = 0;
$fillYb = $dstHeight - $fillY;
} else {
$srcX = round(($srcInfo[0] - $srcInfo[1])/2);
$srcY = 0;
$srcWidth = $srcInfo[1];
$srcHeight = $srcInfo[1];
$fillX = $srcX * -($dstWidth / $srcWidth);
$fillY = $dstHeight;
$fillXb = $dstWidth - $fillX;
$fillYb = 0;
}
header ("Content-type: image/jpeg");
header('Content-Disposition: inline; filename="prodimg.jpg"');
$srcImg = imagecreatefromjpeg($srcImg);
$dstImg = imagecreatetruecolor($dstWidth, $dstHeight);
imagecopyresampled($dstImg, $srcImg, 0, 0, $srcX, $srcY, $dstWidth, $dstHeight, $srcWidth, $srcHeight);
$bgColor = imagecolorallocate($dstImg, 255,255,255);
imagefilledrectangle($dstImg, 0, 0, $fillX, $fillY, $bgColor);
imagefilledrectangle($dstImg, $fillXb, $fillYb, $dstWidth, $dstHeight, $bgColor);
imagejpeg($dstImg, null, 100);
imagedestroy($dstImg);
imagedestroy($srcImg);