`
paulfzm
  • 浏览: 872115 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

PHP生成高质量的缩略图

    博客分类:
  • 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]

 

分享到:
评论

相关推荐

    PHP用GD库生成高质量的缩略图片

    PHP用GD库生成高质量的缩略图片,PHP一般情况下生成的缩略图都比较不理想。今天试用PHP,GD库来生成缩略图。虽然并不100%完美。可是也应该可以满足缩略图的要求了。

    php实现按指定大小等比缩放生成上传图片缩略图的方法

    本文实例讲述了php实现按指定大小等比缩放生成上传图片缩略图的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:/**  * *  *等比缩放  * @param unknown_type $srcImage 源图片路径  * ...

    使用PHP生成图片的缩略图的方法

    * 功能:php生成缩略图片的类 */ class ResizeImage{ public $type;//图片类型 public $width;//实际宽度 public $height;//实际高度 public $resize_width;//改变后的宽度 public $resize_height;//改变后...

    Image For Homepage1.3首页显示日志缩略图插件 for Wordpress.zip

    2、缩略图质量大大提高(重要改进) Image For Homepage 1.0版中,有时生成的缩略图会有锯齿现象。如果是一般用户可能觉得无所谓,但是如果对图片要求比较高的用户,可能就会觉得看着很不舒服。于是在1.3版中,就...

    PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)

    你可能会遇到这样的问题,在用户上传了一张图片后,得到这张图片的缩略图,PHP可以使用GD库生成缩略图,那么我们来探讨下,如何才能生成高质量的缩略图呢?

    [图片动画]在线批量生成缩略图工具(PHP)_remini.rar

    【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。...

    php生成缩略图质量较差解决方法代码示例

    近期弄个论坛,在首页要有个排名,显示评论最多的前十位...* @name thum 缩略图函数 * @param sting $img_name 图片路径 * @param int $max_width 略图最大宽度 * @param int $max_height 略图最大高度 * @param sting

    php实现图片缩略图的方法

    * 功能:php生成缩略图片的类 */ class ResizeImage{ public $type;//图片类型 public $width;//实际宽度 public $height;//实际高度 public $resize_width;//改变后的宽度 public $resize_height;//改变后的高度 ...

    PHPOK3.0精简版企业网站

    修正GD类在生成缩略图间距计算的错误 修正GD类在使用缩放法生成图片时出现的超过系统宽高 更换时间插件 移动后台模板至templates目录下 修正自定义链接的编辑时不显示名称的BUG SEO关键字和描述功能在列表页及详细页...

    红技shop网上购物系统 v2.0.rar

    上传商品图片时系统可自动将大图片生成缩略小图片,从而减少了宽带流量和增强网络传输速度使图片质量高不变形并且显示速度更快。另外上传图片之前可跟据您的具体情况可以在图片中自动生成水印文字,防止图片被不法...

    UWA 2.X 通用建站系统 v2.1.0

    [PFA 内核] 简洁、优雅的高质量代码具有极高的通用性和扩展性。 [档案模型] 自定义档案模型,丰富网站,便于内容扩展及二次开发。 [极速高效] 高效的动静态页面部署,数据多重缓存,网站极速访问。 [自动更新] 网站...

    网管教程 从入门到精通软件篇.txt

    DWG:AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式 DXR:Macromedia Director受保护(不可编辑)电影文件 E EDA:Ensoniq ASR磁盘映像 EDD:元素定义文档(FrameMaker+SGML文档) EDE:Ensoniq ...

Global site tag (gtag.js) - Google Analytics