billeder bliver kornede ved upload og konventering
hej eksperter!jeg har et kanont træls problem... :(
jeg har nedenstående funktion jeg bruger til at behandle billeder jeg oploader til et site! det er meget store billeder jeg oploader (altså højde/bredde) og derfor laver jeg to kopier - en hel lille en (thumb) og et lidt større (eks)
problemet er at de to mindre billeder jeg laver bliver meget kantede og ikke særligt pæne at se på, og det er virkelig generende!
jeg vil _meget_ gerne være fri for manuelt med photoshop at skulle omkonventere alle billederne (der er mange) også manuelt igen oploade 3 forskellige billeder til hvert billede!
er der nogen der kender en bedre måde at gøre det jeg forespørger end i den funktion jeg bruger?
funktionen ser således her ud:
<?
function uploadimage($source) {
$felt = $_FILES[$source];
$phptime = time();
$maxsize = 2048;
if ($felt["size"] > 0) {
$kb = $maxsize;
$byte = $kb*1024;
$unikname = $phptime . rand(1000, 9999);
$arg = array(1 => "Filen er større end tilladt upload i php.ini", 2 => "Filen er større end ". round(($kb*1024)/1000) ." Kb", 3 => "Sorry, men kun en del af filen blev uploadet", 4 => "Vælg en fil til upload!");
if ($felt["error"] == 0) {
if (true == ($str = getimagesize($felt["tmp_name"]))) {
if ($str[2] <= 3) {
if ($felt["size"] <= $byte) {
// mulige filendelser
$filetypes = array(1 => "gif", 2 => "jpg", 3 => "png");
// filtype
$filtypen = strtr($str[2], $filetypes);
// filnavn
$upname = $unikname .".". $filtypen;
// stier
$fra = $felt["tmp_name"];
$til = "../images/produkt/" . $upname;
$thumb = "../images/produkt/thumb/" . $upname;
$eks = "../images/produkt/eks/" . $upname;
// størrelsesforhold
$forhold = $str[1]/$str[0];
$nyhojde = $forhold*100;
$nyeks = $forhold*300;
if (move_uploaded_file($felt["tmp_name"], $til)) {
// lave thumbs
if ($filtypen == "jpg") {
Header("Content-type: image/jpeg");
$src_img = imagecreatefromjpeg($til);
$thumbnail = imagecreatetruecolor(100,$nyhojde); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,100,$nyhojde,$str[0],$str[1]);
imagejpeg($thumbnail,$thumb,50);
$src_img = imagecreatefromjpeg($til);
$thumbnail = imagecreatetruecolor(300,$nyeks); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,300,$nyeks,$str[0],$str[1]);
imagejpeg($thumbnail,$eks,50);
}
elseif ($filtypen == "png") {
Header("Content-type: image/png");
$src_img = imagecreatefrompng($til);
$thumbnail = imagecreatetruecolor(100,$nyhojde); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,100,$nyhojde,$str[0],$str[1]);
imagepng($thumbnail,$thumb,50);
$src_img = imagecreatefrompng($til);
$thumbnail = imagecreatetruecolor(300,$nyeks); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,300,$nyeks,$str[0],$str[1]);
imagepng($thumbnail,$eks,50);
}
elseif ($filtypen == "gif") {
Header("Content-type: image/png");
$src_img = imagecreatefromgif($til);
$thumbnail = imagecreatetruecolor(100,$nyhojde); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,100,$nyhojde,$str[0],$str[1]);
imagepng($thumbnail,$thumb,50);
$src_img = imagecreatefromgif($til);
$thumbnail = imagecreatetruecolor(300,$nyeks); // width, height
imagecopyresized($thumbnail,$src_img,0,0,0,0,300,$nyeks,$str[0],$str[1]);
imagepng($thumbnail,$eks,50);
}
$thumbsize = getimagesize($thumb);
$size = filesize($til);
$size_thumb = filesize($thumb);
$height = $str[0];
$height_thumb = $thumbsize[0];
$width = $str[1];
$width_thumb = $thumbsize[1];
mysql_query("insert into lobo_image (url,size,size_thumb,width,width_thumb,height,height_thumb,tidspunkt,ip) values ('$upname','$size','$size_thumb','$width','$width_thumb','$height','$height_thumb','$phptime','$ip')") or die(mysql_error());
$foresp = mysql_query("SELECT * FROM lobo_image WHERE url = '$upname'") or die(mysql_error());
while($row = mysql_fetch_array($foresp)) {
$id = $row["id"];
}
}
else {
$fejl = "Billedet kunne ikke oploades... Prøv igen!";
}
}
else {
$fejl = "Filen var for stor til opload...";
}
}
else {
$fejl = "Kun jpg, gif og png billedefiler kan oploades!";
}
}
else {
$fejl = "Filen du oploadede er ikke et billede!";
}
}
else {
$fejl = strtr($felt["error"], $arg);
}
}
if (!isset($fejl) && isset($id)) {
$return = $id;
}
else {
$return = $fejl;
}
return $return;
}
?>
håber virkelig på hjælp :P
