• 技术文章 >php教程 >php手册

    php图片缩放代码-按比例缩放或截取指定大小的缩略图 非常好用的一个方法

    2016-06-13 10:46:12原创313
    /**********************************************************

    * function resize:

    *

    * = creates a resized image based on the max width

    * specified as well as generates a thumbnail from

    * a rectangle cut from the middle of the image.

    *

    * @dir = directory image is stored in

    * @newdir = directory new image will be stored in

    * @img = the image name

    * @newimg = the image new name

    * @max_w = the max width of the resized image

    * @max_h = the max height of the resized image

    * @th_x = The starting point of the x-coordinate

    * @th_y = The starting point of the y-coordinate

    * @th_w = the width of the thumbnail

    * @th_h = the height of the thumbnail

    * @cut = Whether to need cut out

    * @center = whether cut from the middle of the image

    *

    **********************************************************/

    function resize($dir, $newdir, $img, $newimg, $max_w, $max_h, $th_x = '', $th_y = '', $th_w = '', $th_h = '',$cut = FALSE,$center = FALSE)

    {

    // set destination directory

    if (!$newdir) $newdir = $dir;

    if (!$newimg) $newimg = $img;

    // get original images width and height

    list($or_w, $or_h, $or_t) = getimagesize($dir.$img);

    switch($or_t){

    // original image

    case 1:

    $or_image = imagecreatefromgif($dir.$img);

    break;

    case 2:

    $or_image = imagecreatefromjpeg($dir.$img);

    break;

    case 3:

    $or_image = imagecreatefrompng($dir.$img);

    break;

    default:

    return '不支持的图像格式'; www.2cto.com

    break;

    }

    // make sure image is a jpeg

    // if ($or_t == 2) {

    // obtain the image's ratio

    // $ratio = ($or_h / $or_w);

    $ratio = ($max_h / $max_w);

    // original image

    // $or_image = imagecreatefromjpeg($dir.$img);

    // resize image?

    if ($or_w > $max_w || $or_h > $max_h) {

    // resize by height, then width (height dominant)

    if ($max_h < $max_w) {

    $rs_h = $max_h;

    $rs_w = $rs_h / $ratio;

    }

    // resize by width, then height (width dominant)

    else {

    $rs_w = $max_w;

    $rs_h = $ratio * $rs_w;

    }

    // copy old image to new image

    $rs_image = imagecreatetruecolor($rs_w, $rs_h);

    imagecopyresampled($rs_image, $or_image, 0, 0, 0, 0, $rs_w, $rs_h, $or_w, $or_h);

    }

    // image requires no resizing

    else {

    $rs_w = $or_w;

    $rs_h = $or_h;

    $rs_image = $or_image;

    }

    // generate resized image

    DrawImage($rs_image, $newdir.$newimg,$or_t,100);

    //裁剪生成指定的大小start-------------------

    if ($cut){

    $th_image = imagecreatetruecolor($th_w, $th_h);

    // cut out a rectangle from the resized image and store in thumbnail

    if ($center){

    $new_w = (($rs_w / 2) - ($th_w / 2));

    $new_h = (($rs_h / 2) - ($th_h / 2));

    }else {

    $new_w = $th_x;

    $new_h = $th_y;

    }

    imagecopyresampled($th_image, $rs_image, 0, 0, $new_w, $new_h, $rs_w, $rs_h, $rs_w, $rs_h);

    // generate thumbnail

    DrawImage($th_image, $newdir.'th_'.$newimg,$or_t,100);

    @ImageDestroy($th_image);

    }

    //生成指定的大小end-------------------

    // return true;

    //}

    // Image type was not jpeg!

    /* else {

    return false;

    } */

    @ImageDestroy($rs_image);

    }

    /**

    * @resource image

    * @filename

    * @quality

    * @type

    **/

    function DrawImage($resource,$filename,$type,$quality){

    switch($type){

    // original image

    case 1:

    $or_image = imagegif($resource,$filename);

    break;

    case 2:

    $or_image = imagejpeg($resource,$filename,$quality);

    break;

    case 3:

    $or_image = imagepng($resource,$filename);

    break;

    }

    }

    摘自 aa705123123的专栏

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:PHP源码分析-变量的引用计数、写时复制(Reference counting &amp; Copy-on-Wr 下一篇:php中持久化存储模块开发总结
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 限制上传文件类型程序代码• 基于php实现七牛抓取远程图片• 谈PHP闭包特性在实际应用中的问题(1)• PHP实现人人OAuth登录和API调用• php mysql 数据库类
    1/1

    PHP中文网