文档章节

php缩略图帮助方法

墙头草
 墙头草
发布于 2011/10/26 11:15
字数 353
阅读 28
收藏 0
public function smart_resize_image($file,
                              $width              = 0,
                              $height             = 0,
                              $proportional       = false,
                              $output             = 'file',
                              $delete_original    = true,
                              $use_linux_commands = false ) {

    if ( $height <= 0 && $width <= 0 ) return false;

    # Setting defaults and meta
    $info                         = getimagesize($file);
    $image                        = '';
    $final_width                  = 0;
    $final_height                 = 0;
    list($width_old, $height_old) = $info;

    # Calculating proportionality
    if ($proportional) {
      if      ($width  == 0)  $factor = $height/$height_old;
      elseif  ($height == 0)  $factor = $width/$width_old;
      else                    $factor = min( $width / $width_old, $height / $height_old );

      $final_width  =  round( $width_old * $factor );
      $final_height = round( $height_old * $factor );
    }
    else {
      $final_width = ( $width <= 0 ) ? $width_old : $width;
      $final_height = ( $height <= 0 ) ? $height_old : $height;
    }

    # Loading image to memory according to type
    switch ( $info[2] ) {
      case IMAGETYPE_GIF:   $image = imagecreatefromgif($file);   break;
      case IMAGETYPE_JPEG:  $image = imagecreatefromjpeg($file);  break;
      case IMAGETYPE_PNG:   $image = imagecreatefrompng($file);   break;
      default: return false;
    }


    # This is the resizing/resampling/transparency-preserving magic
    $image_resized = imagecreatetruecolor( $width, $height );

    $white = imagecolorallocate($image, 255, 255, 255);
    $transparency = imagecolortransparent($image, $white);
   

    if ( ($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG) ) {
     
      if ($transparency >= 0) {
        //$transparent_color  = imagecolorsforindex($image, $trnprt_indx);
        $transparency       = imagecolorallocate($image_resized, 255, 255, 255);
        imagefill($image_resized, 0, 0, $transparency);
        imagecolortransparent($image_resized, $transparency);
      }
      elseif ($info[2] == IMAGETYPE_PNG) {
        imagealphablending($image_resized, false);
        $color = imagecolorallocatealpha($image_resized, 255, 255, 255, 127);
        imagefill($image_resized, 0, 0, $color);
        imagesavealpha($image_resized, true);
      }
    } 风之境地
    else
    {
      imagefill($image_resized, 0, 0, $transparency);
    }
   
    imagecopyresampled($image_resized, $image, ($width - $final_width)/2, ($height - $final_height)/2, 0, 0, $final_width, $final_height, $width_old, $height_old);

    # Taking care of original, if needed
    if ( $delete_original ) {
      if ( $use_linux_commands ) exec('rm '.$file);
      else @unlink($file);
    }

    # Preparing a method of providing result
    switch ( strtolower($output) ) {
      case 'browser':
        $mime = image_type_to_mime_type($info[2]);
        header("Content-type: $mime");
        $output = NULL;
      break;
      case 'file':
        $output = $file;
      break;
      case 'return':
        return $image_resized;
      break;
      default:
      break;
    }

    # Writing image according to type to the output destination
    switch ( $info[2] ) {
      case IMAGETYPE_GIF:   imagegif($image_resized, $output);    break;
      case IMAGETYPE_JPEG:  imagejpeg($image_resized, $output);   break;
      case IMAGETYPE_PNG:   imagepng($image_resized, $output);    break;
      default: return false;
    }

    return true;
  }

  function set_thumb_file($product_id, $image_file, $thumb_width, $thumb_height)
  {
    $thumb_file = 'nopic';
    if($image_file && trim($image_file != ''))
    {
      $image_doc = WWW_ROOT . 'files' . DS . 'uploads' . DS . $product_id . DS;
      $image_path = $image_doc . $image_file;
      if(file_exists($image_path))
      {
        $f_and_ext = explode('.', $image_file);
        $thumb_file = $f_and_ext[0] . '_' . $thumb_width . 'x' . $thumb_height . '.' . $f_and_ext[1];
        $thumb_path = $image_doc . $thumb_file;
        if(!file_exists($thumb_path))
        {
          $this->smart_resize_image($image_path, $thumb_width, $thumb_height, true, $thumb_path, false);
        }
      }
    }
    return $thumb_file;
  }

© 著作权归作者所有

墙头草
粉丝 16
博文 145
码字总数 117172
作品 0
卢湾
私信 提问
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

彭博
2012/04/12
1K
1
ASP.NET MVC5+EF6+EasyUI 后台管理系统(36)-文章发布系统③-kindeditor使用

系列目录 我相信目前国内富文本编辑器中KindEditor 属于前列,详细的中文帮助文档,简单的加载方式,可以定制的轻量级。都是系统的首选 很多文章教程有kindeditor的使用,但本文比较特别可能...

文艺小青年
2017/07/06
0
0
PHP 缩放图片

对于网站前端上传的图片,在后台处理时有必要对其进行缩放以生成大小统一的缩略图。在PHP中,可以很方便的使用GD库来完成这一任务。下面的CImage类的静态方法CreateThumbnail()函数可以接受原...

长平狐
2012/12/10
36
0
WordPress 开启日志缩略图 以及不用插件的程序使用方法

很多 WordPress 主题,特别是那些杂志型的主题,会给每篇日志加上一张缩略图,这种展现方式一般用在首页,可能单独出现,或者和日志摘要一起。但是目前位置没有一个标准的方法去实现日志缩略...

李佳顺
2012/11/14
244
0
android调用本地音视频文件获取信息

最近在整理学习音视频类的知识,在此记录一下: 首先启动Intent选择音视频 Intent intent1 = new Intent(Intent.ACTIONGETCONTENT);//intent.setType("image/*"); //选择图片// intent.setTy......

u013060126
2017/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[top]cpu内存

%Cpu(s): 96.0 us用户进程整理cpu的占比,按整个cpu算。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ......

Danni3
4分钟前
1
0
JavaScript权威指南笔记2

第二章、词法结构 1、字符集 JavaScript程序:Unicode字符集编写 Unicode:ASCII和Latin-1的超集,支持所有在用的语言。 ECMAScript 3要求JavaScript的实现必须支持Unicode 2.1及后续版本 EC...

_Somuns
12分钟前
4
0
数据安全管理:RSA算法,签名验签流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一、RSA算法简介 1、加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用。可以在不直接传递密钥的情况下,完成加解密操...

知了一笑
52分钟前
5
0
Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
今天
6
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部