Breyta stærð myndar með aðstoð PHP og GD
Hér á eftir kemur klasi sem ég nota til að resiza myndir með gd
Athugið að gd styður ekki gif myndir
Klasinn er upprunalega ekki eftir mig en ég breytti honum lítilega
Upprunalegi kóði:
Image thumbnail0r (with an “0” :])
mike[@]filespanker.com
Klasinn:
class Imageresize {
function percent($p, $w)
{
return (real)(100 * ($p / $w));
}
function unpercent($percent, $whole)
{
return (real)(($percent * $whole) / 100);
}
function resize($img, $w, $h)
{
// Resize it
$ow = imagesx ($img); // Original image width
; $oh = imagesy ($img); // Original image height
// Viðhalda hlutföllunum
// Ef upprunalega breiddin er stærri en upprunalega hæðin
// Þá notum við breiddina sem send var inn og minkum hæðina í
// í réttum hlutföllum
if ($ow > $oh)
{
$nw = $w;
$nh = $this->unpercent($this->percent($nw, $ow), $oh);
}
// Og öfugt ef hæðin er stærri
else if ($oh > $ow)
{
$nh = $h;
$nw = $this->unpercent($this->percent($nh, $oh), $ow);
}
else
{
$nh = $h;
$oh = $w;
}
// Búum til nýja mynd með nýju stærðunum og copyerum upprunalegu
// myndina yfir í hana
$out = imagecreate($nw, $nh);
imagecopyresized($out, $img, 0, 0, 0, 0, $nw, $nh, $ow, $oh);
imagedestroy($img);
// Skilum út resize-uðu myndinni
return $out;
}
}
?>
Til að upploada skrá á vefserverinn þá þarf að búa til form með enctype="multipart/form-data" og file inputi
Dæmi: <form action="image.php" method="post" enctype="multipart/form-data">
<input name="img" type="file">
<input type="submit" value="Senda">
</form>Munið bara að enctype verður að vera multipart/form-data annars virkar þetta ekki.
Ef allt gengur að óskum þá geymir php sjálfkrafa skránna í temp skrá, hún fær sama nafn og file input-ið í forminu, img í þessu tilfelli. Hægt er þá að nálgast hana í gegnum breytuna $img. Einnig verða til breyturnar:
$img_name = upprunalega nafn eða slóð í skránna á vélinni sem uploadað var frá
$img_size = stærð skráarinnar
$img_type = mime týpa skráarinnar
Hér er dæmi um notkun á klasanum.
Þessi forritsbútur athugar hvort myndin sé of stór miðað við ákveðna breidd og hæð og ef svo er þá er hún minnkuð í rétta stærð.
Ég eftirlæt ykkur sjálfum að búa til skráarnöfn á myndirnar, það gæti td. verið id í gagnagrunni.
<?
// geri ráð fyrir að rezise clasinn sé í skrá sem heitir
// class.imageresize.php
include (“class.imageresize.php”);
// búum til nýjan hlut
$resize = new Imageresize;
// Ákvörðum hámarks leyfilega stærð á myndinni
$width = 60;
$height = 60;
// Pökkunin á jgp myndinni (1-100)
$quality = 75;
// náum á stærðina á myndinni sem upploadað var
$size = GetImageSize ($img);
// Athugum hvort myndin sé ekki örugglega jpeg
if (eregi (“jpeg”, $img_type)) {
// Athugum hvort hæðin eða breidd sé stærri en leyfilegt er
// og ef svo er minnkum við hana
if (($size[0] > $width) || ($size[1] > $height)) {
$imgr = $resize->resize(ImageCreateFromJPEG($img), $width, $height);
imagejpeg ($imgr , “/slod/a/myndasafn/nafnmyndar.jpg” , $quality);
}
// Ef myndin er ekki of stór þá færum við bara orginal myndina
else {
move_uploaded_file ($img, “/slod/a/myndasafn/nafnmyndar.jpg”);
}
}
?>
Endilega baunið bara á mig ef þið skiljið ekki eitthvað