Jag har för mig att det skall fungera att förminska jpg-bilder
med hjälp av php!
Men finns det nåt bra sätt att lösa detta med php då?
Går det att få ett litet exempel på detta?
5 svar · 489 visningar · startad av Dr-man
Jag har för mig att det skall fungera att förminska jpg-bilder
med hjälp av php!
Men finns det nåt bra sätt att lösa detta med php då?
Går det att få ett litet exempel på detta?
Kan verkligen rekommendera Mungos funktion -- gör riktigt snygga thumbnails utan att man behöver installera någon mumbojumbo-komponent på servern.
Dock upptäckte jag ett fel i koden:
$im_width=imagesx($im);
$im_height=imagesy($im);
if ($maxX > $maxY) {
$factor = $maxX/$im_width;
$new_width = $maxX;
$new_height = $im_height * $factor;
}
else {
$factor = $maxY/$im_width;
$new_width = $maxY;
$new_height = $im_height * $factor;
}
Felet här är else-satsen. Om du laddar upp en "stående" bild, alltså en med större höjd än bredd, får den förminskade bilden felaktiga proportioner. Jag ersatte hela if-satsen med följande:
if ($im_width > $im_height) {
$new_width = $maxX;
$new_height = $new_width * $im_height / $im_width;
}
else {
$new_height = $maxY;
$new_width = $new_height * $im_width / $im_height;
}
Men i övrigt fungerar den som sagt strålande :) .
Ojdå, det har jag inte märkt själv, men jag kanske redan har fixat den där buggen nån gång själv. :) Ska dock ta din if-sats - den ser mycket snyggare ut.
Den här koden funkade bra för mig också..
<?
/* Bestäm höjden och bredden på bilden. */
$dest_width=100;
$dest_height=100;
$dst_img = imagecreate($dest_width,$dest_height);
$src_img = imagecreatefromjpeg("$bild");
/* Skapa bilden i 100*100 pixlar */
imagecopyresized($dst_img,$src_img,0,0,0,0,$dest_width,$dest_height,ImageSX($src_img),ImageSY($src_img));
/* Sökvägen dit den nya bilden ska hamna och kvalité på bilden.*/
imagejpeg($dst_img,"minis/$bild",75);
?>
Har du tillgång till GD2 på din server bör du använda imagecreatetruecolor istället för imagecreate samt imagecopyresampled istället för imagecopyresized.
Ger bättre kvalitet på bilderna.