Frågan#1 Hur löser jag det enklast om jag endast vill skapa en miniatyr från en liten del av en bild (centrerat)? *lite svårt att förklara*
Just nu använder jag följande kod för att skapa miniatyrer:
function thumb_pic($src, $dst, $maxW = 100, $maxH = 100) {
$imagesize = getimagesize($src);
$quality = 100;
$srcX = 0;
$srcY = 0;
$orgW = $imagesize[0];
$orgH = $imagesize[1];
switch ($imagesize[2]) {
case 1: // gif
$src_im = imagecreatefromgif($src);
break;
case 2: // jpg
$src_im = imagecreatefromjpeg($src);
break;
case 3: // png
$src_im = imagecreatefrompng($src);
break;
default:
trigger_error("Okänd bild-typ", E_USER_ERROR);
break;
}
if ($orgW > $maxW) {
$dstW = $maxW;
$dstH = round($orgH * $dstW / $orgW);
} else {
$dstW = $orgW;
$dstH = $orgH;
}
if ($dstH > $maxH) {
$dstH = $maxH;
$dstW = round($orgW * $dstH / $orgH);
}
$dst_im = imagecreatetruecolor($dstW, $dstH);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $orgW, $orgH);
imagejpeg($dst_im, $dst, $quality);
imagedestroy($dst_im);
imagedestroy($src_im);
}
Miniatyren som skapas måste ha följande storlek:
690 × 396 pixlar (räknat från mitten av originalbilden)
(bifogar exempel)
fiddlerMedlem sedan juli 20023 617 inläggSkriptet från denna tråd kan väl vara en bra start: http://www.webforum.nu/showthread.php?t=173981
fiddler skrev:
Skriptet från denna tråd kan väl vara en bra start: http://www.webforum.nu/showthread.php?t=173981
Kanon! Det verkar vara precis det jag söker.
En sak till... :r
Hur kan jag slå ihop min nuvarande kod:
function thumb_pic($src, $dst, $maxW = 100, $maxH = 100) {
$imagesize = getimagesize($src);
$quality = 100;
$srcX = 0;
$srcY = 0;
$orgW = $imagesize[0];
$orgH = $imagesize[1];
switch ($imagesize[2]) {
case 1: // gif
$src_im = imagecreatefromgif($src);
break;
case 2: // jpg
$src_im = imagecreatefromjpeg($src);
break;
case 3: // png
$src_im = imagecreatefrompng($src);
break;
default:
trigger_error("Okänd bild-typ", E_USER_ERROR);
break;
}
if ($orgW > $maxW) {
$dstW = $maxW;
$dstH = round($orgH * $dstW / $orgW);
} else {
$dstW = $orgW;
$dstH = $orgH;
}
if ($dstH > $maxH) {
$dstH = $maxH;
$dstW = round($orgW * $dstH / $orgH);
}
$dst_im = imagecreatetruecolor($dstW, $dstH);
imagecopyresampled($dst_im, $src_im, 0, 0, 0, 0, $dstW, $dstH, $orgW, $orgH);
imagejpeg($dst_im, $dst, $quality);
imagedestroy($dst_im);
imagedestroy($src_im);
}
..med denna:
function thumb($pic)
{
$x = 690; //Ny bredd på bilden
$y = 396; //Ny höjd på bilden
// Läser in den stora bilden och kollar storleken på den.
$stor_bild = imagecreatefromjpeg($pic);
$stor_x = imagesx($stor_bild);
$stor_y = imagesy($stor_bild);
//Plockar ut mitten
$src_x = floor($stor_x/2 - $x);
$src_y = floor($stor_y/2 - $y);
// Skapar bilden.
$thumb = imagecreatetruecolor($x, $y);
imagecopyresampled($thumb, $stor_bild, 0, 0, $src_x, $src_y, $x, $y, $x*2, $y*2);
// Skriver ut bilden
imagejpeg ($thumb,NULL,80);
//Tar bort bilderna ur minnet.
imagedestroy($thumb);
imagedestroy($stor_bild);
}
Med min nuvarande kod, så skapas två olika miniatyrer, (en liten och en mellan).
Liten: 330 × 190 pixlar
Mellan: 690 × 396 pixlar
Jag är oerhört tacksam för hjälp med mitt senaste inlägg ovan.
(Har stirrat mig blind.)
fiddlerMedlem sedan juli 20023 617 inläggJag kan kolla på den vid tillfälle. Dock ska jag snart iväg igen...
fiddler skrev:
Jag kan kolla på den vid tillfälle. Dock ska jag snart iväg igen...
Underbart! Tack på förhand... :e