PHP生成高质量的缩略图

/**
   * 生成高质量的缩略图函数
   *
   * @param 原图片地址 $img_tempname
   * @param 缩略图最大宽度   $max_width
   * @param 生成缩略图地址   $dst_url
   * @return unknown
   */
public function createDstImage($img_tempname,$max_width,$dst_url)
{
   global $uploadpath,$id,$uploadtype;
  
   if (!file_exists($img_tempname))
   {
die('抱歉,您要上传的图片不存在!');
   }
   $img_src=file_get_contents($img_tempname);
   $image=imagecreatefromstring($img_src);//用该方法获得图象,可以避免“图片格式”的问题
   $width=imagesx($image);//取得图像宽度
   $height=imagesy($image);//取得图像高度
   $x_ratio=$max_width/$width;//宽度的比例
  
   if ($width<=$max_width)
   {
$tn_width=$width;
$tn_height=$height;
   }
   else
   {
$tn_width=$max_width;
$tn_height=round($x_ratio*$height);
   }
  
   if (function_exists('imagecreatetruecolor')&&(function_exists('imagecopyresampled')))
   {
/*生成高质量的缩略图方法*/
$dst=imagecreatetruecolor($tn_width,$tn_height);//新建一个真彩色图象
imagecopyresampled($dst,$image,0,0,0,0,$tn_width,$tn_height,$width,$height);//重采样拷贝部分图像并调整大小
   } else {
$dst=imagecreate($tn_width,$tn_height);
imagecopyresized($dst,$image,0,0,0,0,$tn_width,$tn_height,$width,$height);
   }
  
imagejpeg($dst,$dst_url,100);//以JPEG格式将图像输出到浏览器或文件,100(最佳质量,文件最大)。默认为IJG默认的质量值(大约75)
   imagedestroy($image);
   imagedestroy($dst);
  
   if (!file_exists($dst_url))
   {
return false;
   } else {
return basename($dst_url);
   }
}

/**
   * 函数功能:上传图片
   *
   * @param 图片实际文件名       $imgname
   * @param 图片临时文件名       $imgtmpname
   * @param 图片大小             $imgsize
   * @param 图片上传的目录    $uploadpath
   * @param course_id或unit_id     $id
   * @param 图片上传归属,比如course/或unit/   $uploadtype
   * @return 图片上传的信息
   */
public function uploadImage($imgname,$imgtmpname,$uploadpath,$id,$uploadtype)//上传图片函数
{
   $savepath=$uploadpath.'/'.$uploadtype.'/';
   $imgtypearray=array('gif','jpg','jpeg','png','bmp');
   $imgname=strtolower($imgname);//将文件名转换为小写
   $imgpathinfo=pathinfo($imgname);
   $extension=$imgpathinfo["extension"];
   $uploadimage=$savepath.$id.'_0.'.$extension;

   if (!in_array($extension,$imgtypearray))
   {
$text=implode(",",$imgtypearray);
echo "<center><font color=red>对不起,你上传的图片类型错误,只能上传".$text."格式的图片!</font><br/>";
echo "<a href='javascript:history.go(-1)'>返回继续上传</a></center>";
exit();
   }
  
   if ($_FILES['imgname']['error']>0)
   {
echo "<center><font color=red>错误</font>:<br/>";
switch ($_FILES['imgname']['error']>0)
{
case 1:
    return '上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值';
case 2:
    return '上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值';
case 3:
                return '文件只有部分被上传';
         case 4:
                return '没有文件被上传';
         case 5:
                return '未知错误!';
         case 6:
                return '找不到临时文件夹';
         case 7:
                return '文件写入失败';
         default:
                return '未知错误!';
}
   }
  
   /*生成所略图最大宽度为250,保存格式为$courseid_1.jpg*/
   $dst_url1=$savepath.'/'.$id.'_1.'.jpg;
   $this->createDstImage($imgtmpname,250,$dst_url1);
  
   /*生成所略图最大宽度为80,保存格式为$courseid_2.jpg*/
   $dst_url2=$savepath.'/'.$id.'_2.'.jpg;
   $this->createDstImage($imgtmpname,80,$dst_url2);
  
   /*生成所略图最大宽度为60,保存格式为$courseid_3.jpg*/
   $dst_url3=$savepath.'/'.$id.'_3.'.jpg;
   $this->createDstImage($imgtmpname,60,$dst_url3);
  
   /*上传原图片*/
   if (@is_uploaded_file($imgtmpname))
   {
if (@!move_uploaded_file($imgtmpname,$uploadimage))
{
echo "<center><font color=red>抱歉,图片上传失败!</font><br/>";
echo "<a href='javascript:history.go(-1)'>返回继续上传</a></center>";
return false;
} else {
echo "<center><font color=blue>恭喜您,图片上传成功!</font>";
return true;
}
   }
}
[/php]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值