saeed-71
پنج شنبه 09 مرداد 1393, 14:35 عصر
سلام.
این کد اپلود عکسم عکس های gif رو وقتی اپلود میکنه تبدیل به jpg میشن کیفیت عکس رو هم خیلی میاره پایین.
function SafeUpload($name, $max_size, $filesize) {
$root = str_replace('\\', '/', dirname(__FILE__));
$allowedTypes = array ('image/gif', 'image/jpeg', 'image/png', 'image/wbmp');
if(!isset($_FILES [$name])) {
return false;
}
$file = &$_FILES [$name];
if($file ['error'] == 0 && in_array($file ['type'], $allowedTypes) && $file ['size'] <= $max_size) {
$in = '';
switch($file ['type']) {
case 'image/gif':
$in = 'ImageCreateFromGIF';
break;
case 'image/jpeg':
$in = 'ImageCreateFromJPEG';
break;
case 'image/png':
$in = 'ImageCreateFromPNG';
break;
case 'image/wbmp':
$in = 'ImageCreateFromWBMP';
break;
}
if($in == '') {
return false;
}
$w=468;
$h=60;
$crop = false;
list($width, $height) = getimagesize($file['tmp_name']);
$r = $width / $height;
if ($crop) {
if ($width > $height) {
$width = ceil($width-($width*abs($r-$w/$h)));
} else {
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
} else {
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
}
$src = $in($file ['tmp_name']);
$dst = imagecreatetruecolor($newwidth, $newheight);
$im = imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
/*$stamp = imagecreatefrompng('../img/watermark.png');
$marge_right = 2;
$marge_bottom = 2;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
imagecopy($dst,$stamp,imagesx($dst) - $sx - $marge_right,imagesy($dst)-$sy-$marge_bottom,0,0,imagesx($stamp),imagesy($stamp)) ;*/
$time = time();
while(file_exists($root . '/../../upload/' . $time . '.gif')) {
$time++;
}
$quality = 100;
do {
ImageJPEG($dst, $root . '/../../upload/' . $time . '.gif');
}
while(filesize($root . '/../../upload/' . $time . '.gif') > $filesize && $quality > 0);
if(file_exists($root . '/../../upload/' . $time . '.gif')){
ImageDestroy($dst);
ImageDestroy($src);
$ax = $time;
return $ax;
}
}// end function
این کد اپلود عکسم عکس های gif رو وقتی اپلود میکنه تبدیل به jpg میشن کیفیت عکس رو هم خیلی میاره پایین.
function SafeUpload($name, $max_size, $filesize) {
$root = str_replace('\\', '/', dirname(__FILE__));
$allowedTypes = array ('image/gif', 'image/jpeg', 'image/png', 'image/wbmp');
if(!isset($_FILES [$name])) {
return false;
}
$file = &$_FILES [$name];
if($file ['error'] == 0 && in_array($file ['type'], $allowedTypes) && $file ['size'] <= $max_size) {
$in = '';
switch($file ['type']) {
case 'image/gif':
$in = 'ImageCreateFromGIF';
break;
case 'image/jpeg':
$in = 'ImageCreateFromJPEG';
break;
case 'image/png':
$in = 'ImageCreateFromPNG';
break;
case 'image/wbmp':
$in = 'ImageCreateFromWBMP';
break;
}
if($in == '') {
return false;
}
$w=468;
$h=60;
$crop = false;
list($width, $height) = getimagesize($file['tmp_name']);
$r = $width / $height;
if ($crop) {
if ($width > $height) {
$width = ceil($width-($width*abs($r-$w/$h)));
} else {
$height = ceil($height-($height*abs($r-$w/$h)));
}
$newwidth = $w;
$newheight = $h;
} else {
if ($w/$h > $r) {
$newwidth = $h*$r;
$newheight = $h;
} else {
$newheight = $w/$r;
$newwidth = $w;
}
}
$src = $in($file ['tmp_name']);
$dst = imagecreatetruecolor($newwidth, $newheight);
$im = imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
/*$stamp = imagecreatefrompng('../img/watermark.png');
$marge_right = 2;
$marge_bottom = 2;
$sx = imagesx($stamp);
$sy = imagesy($stamp);
imagecopy($dst,$stamp,imagesx($dst) - $sx - $marge_right,imagesy($dst)-$sy-$marge_bottom,0,0,imagesx($stamp),imagesy($stamp)) ;*/
$time = time();
while(file_exists($root . '/../../upload/' . $time . '.gif')) {
$time++;
}
$quality = 100;
do {
ImageJPEG($dst, $root . '/../../upload/' . $time . '.gif');
}
while(filesize($root . '/../../upload/' . $time . '.gif') > $filesize && $quality > 0);
if(file_exists($root . '/../../upload/' . $time . '.gif')){
ImageDestroy($dst);
ImageDestroy($src);
$ax = $time;
return $ax;
}
}// end function