`
paulfzm
  • 浏览: 884307 次
  • 性别: 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 生成缩略图

    在PHP中生成缩略图是一项常见的任务,尤其在网站开发中,用于展示图片时节省带宽和优化用户体验。本文将详细讲解如何使用PHP创建缩略图,并探讨相关...通过学习和实践,你将能够熟练地在PHP环境中生成高质量的缩略图。

    PHP程序生成图片缩略图

    ### PHP程序生成图片缩略图知识点详解 #### 一、概览 在Web开发中,为了提高用户体验并减少服务器带宽消耗,经常会遇到需要对图片进行处理以生成不同尺寸缩略图的需求。本文将深入探讨一个PHP脚本,该脚本能够实现...

    PHP大图片生成缩略图

    以上就是使用PHP生成大图片缩略图的方法和一些优化技巧。通过GD库或Imagick扩展,我们可以灵活地处理各种尺寸和格式的图片,为网站提供高效、优质的图像服务。在实际应用中,根据项目需求和服务器配置选择合适的方法...

    php 缩略图生成类

    使用ImageMagick进行缩略图生成可以得到更好的质量和更丰富的功能。ImageMagick库可以通过命令行接口或者PHP的Imagick扩展来调用。 "php 缩略图生成类"应该包含以下核心功能: 1. **按比例缩小/放大**:这是最基本...

    php生成图片缩略图代码类.zip

    这个"php生成图片缩略图代码类.zip"压缩包提供了一个专门用于创建图片缩略图的PHP类,简化了这一过程。下面将详细介绍这个类的工作原理以及如何使用。 首先,我们需要理解图片缩略图生成的基本概念。缩略图是原图的...

    PHP根据文章标题生成缩略图,并居中展示

    在PHP开发中,生成文章标题的缩略图并居中展示是一种常见的网页美化技术,它可以帮助用户快速识别和预览文章内容。以下是一些关于如何实现这个功能的关键知识点: 1. **图像处理库**:首先,你需要一个图像处理库来...

    一个PHP生成缩略图的类库

    这个“PHP生成缩略图的类库”提供了一种高效且灵活的方式来创建不同类型的缩略图,包括扭曲型、按比例缩放、最小裁剪以及背景填充等。以下是对这些功能的详细解释: 1. **生成扭曲型缩图**:这种类型的缩略图会保持...

    php生成图片缩略图的一个代码类.zip

    在这个名为"php生成图片缩略图的一个代码类.zip"的压缩包中,我们找到了一个用于创建图片缩略图的PHP类。这个类提供了方便的方法来处理图像,包括源图片的读取、缩略图的生成以及是否保留源文件和覆盖原有文件的选项...

    php 使用ffmpeg 视频转换,截图,生成缩略图

    当这两者结合时,我们可以用PHP通过FFmpeg API来实现对视频的高级操作,如视频转换、截图以及生成缩略图。在这个场景中,提供的压缩包包含了一个PHP类,专门用于利用FFmpeg进行这些任务。 首先,我们需要理解FFmpeg...

    批量生成缩略图的php代码

    7. **优化性能**:对于大量图片,可以考虑使用队列处理,将生成缩略图的任务分步执行,避免一次性加载过多文件导致服务器负载过高。 827d这个文件名可能是压缩包的主文件名,通常压缩包内会包含PHP脚本、示例图片...

    PHP产品缩略图生成方法

    本文将深入探讨如何使用PHP实现产品缩略图的生成。 首先,我们来理解“缩略图生成”的概念。缩略图是在不影响原图信息的情况下,通过调整图像大小,生成一种较小尺寸的版本,通常用于预览或节省存储空间。在电子...

    php生成任意尺寸图片的缩略图类.zip

    这个"php生成任意尺寸图片的缩略图类.zip"提供了一个PHP类库,可以帮助开发者方便地创建任意尺寸的图片缩略图。下面将详细解释这个类库的工作原理和可能涉及的关键知识点。 1. **类的结构与工作流程** - 类库通常...

    phpthumb使用ImageMagick来生成缩略图

    phpthumb是一款强大的PHP类库,它能够生成高质量的图像缩略图。而ImageMagick则是一个功能强大的命令行图像处理工具,支持多种图像格式,并提供了丰富的图像操作功能。将两者结合,可以实现更复杂、更自定义的缩略图...

    php生成图片各种缩略图的类.zip

    这些功能对于生成高质量的缩略图至关重要。例如,处理PNG或GIF等支持透明度的格式时,可能需要保持透明背景,而调整质量则可以控制输出图片的大小与清晰度之间的平衡。 总之,这个PHP类为开发者提供了一个方便的...

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

    变量`$quality`用于控制生成缩略图时的JPEG图像质量。它可以在0到100之间取值,数值越大,图像质量越高,但文件大小也越大。在生成缩略图时,将`$quality`作为参数传递给`imagejpeg()`函数。 8. **资源管理**: ...

    用PHP批量生成图片缩略图——活跃论坛转帖

    在PHP编程中,批量生成图片缩略图是一个常见的需求,特别是在构建论坛或社交媒体平台时,为了提高用户体验,通常需要对用户上传的图片进行自动化处理,生成预览版本,即缩略图。本教程将深入探讨如何使用PHP实现这一...

    php利用gd生成缩略图 并保存原图

    在PHP中,生成缩略图是一项常见的任务,特别是在网站开发中,用于展示图片时节省带宽和优化用户体验。GD库是PHP内置的图形处理库,它提供了丰富的功能,包括创建、修改和显示图像,以及我们这里关注的——生成缩略图...

    生成缩略图减小图片体积(PHP)

    本文将详细讨论如何使用PHP生成缩略图,以降低图片体积,同时确保页面加载速度快且不影响图片的可识别性。 首先,理解缩略图生成的基本原理至关重要。缩略图是原始图片的一个较小版本,通常通过按比例裁剪或调整...

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

    总结来说,文章提供了一个PHP生成高质量缩略图的代码示例,通过使用imagecopyresampled函数和合理设置图片质量参数,可以有效解决因图片缩放导致的质量问题。同时,文章也指出了GD库和Imagick扩展之间的区别,为...

    功能强大的php图片缩略图类

    总的来说,`timthumb.php` 是一个功能全面的PHP图片缩略图解决方案,它简化了图片处理流程,提高了开发效率,同时也为用户提供了一个高质量、响应式的图片展示体验。对于任何需要处理大量图片的项目,这都是一个值得...

Global site tag (gtag.js) - Google Analytics