webForumDet fria alternativet

Hur förminska bilder med php?

5 svar · 489 visningar · startad av Dr-man

Dr-manMedlem sedan juli 2002732 inlägg
#1

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?

Kent.JMedlem sedan aug. 2001153 inlägg
jepsOMedlem sedan mars 2001484 inlägg
#3

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 :) .

MungoMedlem sedan jan. 2000372 inlägg
#4

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.

giikMedlem sedan mars 2002112 inlägg
#5

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);
?>
MatteMedlem sedan aug. 20002 975 inlägg
#6

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.

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)