23. september 2007 - 16:09
Der er
2 kommentarer og
1 løsning
Resize to gange
Hey
Jeg har et php script som jeg bruger til at uploade et billeder, som bliver resized og renamed og stien bliver sendt til en database... Men, kunne godt tænke mig at få scriptet til at lave én kop mere og altså på den måde genere et thumbnail... men har kke kunnet få det bakset sammen.
Efter mange timers søgen er jeg dog kommet frem til at den det bedste er at resize det netop rezisede billede?
Anyways, min kode er her, hvis der er en der kan hjælpe mig på vej til den lille udbyggelse vil jeg blive meget glad!
if ($_FILES['Filedata']['name']) {
echo(" ");
$uploadDir = "uploads/";
$uploadFile = "uploads/" . $action . basename($_FILES['Filedata']['name']);
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
//Resize og dupliker
$max_width=400; //max bredde
$max_height=300; //max højde
$size=getimagesize($uploadFile);
$width=$size[0];
$height=$size[1];
$x_ratio=$max_width/$width;
$y_ratio=$max_height/$height;
if(($width<=$max_width) && ($height<=$max_height)){
$tn_width=$width;
$tn_height=$height;
}
else if(($x_ratio*$height)<$max_height){
$tn_height=ceil($x_ratio*$height);
$tn_width=$max_width;
}
else{
$tn_width=ceil($y_ratio*$width);
$tn_height=$max_height;
}
$src=imagecreatefromjpeg($uploadFile);
$dst=imagecreatetruecolor($tn_width,$tn_height); //lav en holder
imagecopyresized($dst,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);
$nameResized = $uploadDir . substr(md5(uniqid(rand(), true)),0,20) . "thumb.jpg"; //navn på det nye billede
imagejpeg($dst,$nameResized,80); //gemmer det nye billede med jpg kvalitet 80
imagedestroy($src);
imagedestroy($dst);
thanks :)
23. september 2007 - 16:29
#1
woila, fandt ud af det (må have lavet nogle søndags sjuske fejl tidligere... Men sådan ser det ud:
if ($_FILES['Filedata']['name']) {
echo(" ");
$uploadDir = "uploads/";
$uploadFile = "uploads/" . $action . basename($_FILES['Filedata']['name']);
move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
//Resize og dupliker
$max_width=400; //max bredde
$max_height=300; //max højde
$size=getimagesize($uploadFile);
$width=$size[0];
$height=$size[1];
$x_ratio=$max_width/$width;
$y_ratio=$max_height/$height;
if(($width<=$max_width) && ($height<=$max_height)){
$tn_width=$width;
$tn_height=$height;
}
else if(($x_ratio*$height)<$max_height){
$tn_height=ceil($x_ratio*$height);
$tn_width=$max_width;
}
else{
$tn_width=ceil($y_ratio*$width);
$tn_height=$max_height;
}
$src=imagecreatefromjpeg($uploadFile);
$dst=imagecreatetruecolor($tn_width,$tn_height); //lav en holder
imagecopyresized($dst,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);
$nameResized = $uploadDir . substr(md5(uniqid(rand(), true)),0,20) . "thumb.jpg"; //navn på det nye billede
imagejpeg($dst,$nameResized,80); //gemmer det nye billede med jpg kvalitet 80
imagedestroy($src);
imagedestroy($dst);
//Resize og dupliker
$max_width_t=200; //max bredde
$max_height_t=100; //max højde
$size_t=getimagesize($uploadFile);
$width_t=$size[0];
$height_t=$size[1];
$x_ratio_t=$max_width_t/$width_t;
$y_ratio_t=$max_height_t/$height_t;
if(($width_t<=$max_width_t) && ($height_t<=$max_height_t)){
$tn_width_t=$width_t;
$tn_height_t=$height_t;
}
else if(($x_ratio_t*$height_t)<$max_height_t){
$tn_height_t=ceil($x_ratio_t*$height_t);
$tn_width_t=$max_width_t;
}
else{
$tn_width_t=ceil($y_ratio_t*$width_t);
$tn_height_t=$max_height_t;
}
$src_t=imagecreatefromjpeg($uploadFile);
$dst_t=imagecreatetruecolor($tn_width_t,$tn_height_t); //lav en holder
imagecopyresized($dst_t,$src_t,0,0,0,0,$tn_width_t,$tn_height_t,$width_t,$height_t);
$nameResized_t = $uploadDir . substr(md5(uniqid(rand(), true)),0,20) . "thumbb.jpg"; //navn på det nye billede
imagejpeg($dst_t,$nameResized_t,80); //gemmer det nye billede med jpg kvalitet 80
imagedestroy($src_t);
imagedestroy($dst_t);
}
Ha en dejlig søndag :)
23. september 2007 - 18:01
#3
Hejsa. Sad netop med samme problem forleden, men er løbet ind i en flaskehald på min udbyders nethotel, nemlig hvis brugeren uploader et fx 3000 px bredt billede, så opstår der problemer med resize, noget med at der måske ikke er ressourcer nok til at udføre handlingen. Hvor bliver dit hostet?