首页 > php图像处理 > php缩略图生成程序

php缩略图生成程序

一直想在网上找个图片所略图程序,但是一直没有找到无变形的,一般都是对原图进行简单的缩放,我想也许已经有了,只是我没有找到,所以没办法自己写了一个,其实也不是全是自己写的,只是在已有的基础上改的.

版权说明:该版本是在"IEB_UPLOAD CLASS Ver 1.1"的基础上二次开发的,原程序对图片的裁剪将使图片变形、失真!本人在该程序的基础上进行了更改,用数据参数与原图片文件参数(主要是指宽和高)进行对比,得出比例值,先生成与原图片同比例缩放的图片,然后再以该中间图中心开始截取,从而获得缩略图,当然,图片会被裁剪,但是是最小限度的裁剪.

//photo_file 表单文件域名称,不要加$; ./up_img,上传位置
$upfos = new ieb_upload('photo_file','./up_img'); 
$old_file_name=$upfos -> getName();
$old_file_fooder=$upfos -> getExt();
$file_size=$upfos -> getSize();
$file_name=$upfos -> newName();
$upfos -> upload($file_name); 
$upfos -> thumb("small_",125,120);
$new_file_name=$upfos -> UpFile(); $new_file_name 上传后大图名
$small_file_name="small_".$new_file_name;  $small_file_name 略图名

php缩略图生成程序源码如下:

<?php
//程序设计:swin.wang  Email: php_in_china@yahoo.com.cn QQ:592298893
//该程序你可无限制使用,但请保留版权信息.
class ieb_upload {
    var $FormName; //文件域名称
    var $Directroy; //上传至目录
    var $MaxSize; //最大上传大小
    var $CanUpload; //是否可以上传
    var $doUpFile; //上传的文件名
    var $sm_File; //缩略图名称
    var $Error; //错误参数
    function ieb_upload($formName = '', $dirPath = '', $maxSize = 2097152) //(1024*2)*1024=2097152 就是 2M
    {
        global $FormName, $Directroy, $MaxSize, $CanUpload, $Error, $doUpFile, $sm_File;
        //初始化各种参数
        $FormName = $formName;
        $MaxSize = $maxSize;
        $CanUpload = true;
        $doUpFile = '';
        $sm_File = '';
        $Error = 0;
        if ($formName == '') {
            $CanUpload = false;
            $Error = 1;
            break;
        }
        if ($dirPath == '') {
            $Directroy = $dirPath;
        } else {
            $Directroy = $dirPath . '/';
        }
    }
    //检查文件是否存在
    function scanFile() {
        global $FormName, $Error, $CanUpload;
        if ($CanUpload) {
            $scan = is_readable($_FILES[$FormName]['name']);
            if ($scan) {
                $Error = 2;
            }
            return $scan;
        }
    }
    //获取文件大小
    function getSize($format = 'B') {
        global $FormName, $Error, $CanUpload;
        if ($CanUpload) {
            if ($_FILES[$FormName]['size'] == 0) {
                $Error = 3;
                $CanUpload = false;
            }
            switch ($format) {
                case 'B':
                    return $_FILES[$FormName]['size'];
                    break;
                case 'M':
                    return ($_FILES[$FormName]['size']) / (1024 * 1024);
            }
        }
    }
    //获取文件类型
    function getExt() {
        global $FormName, $Error, $CanUpload;
        if ($CanUpload) {
            $ext = $_FILES[$FormName]['name'];
            $extStr = explode('.', $ext);
            $count = count($extStr) - 1;
        }
        return $extStr[$count];
    }
    //获取文件名称
    function getName() {
        global $FormName, $CanUpload;
        if ($CanUpload) {
            return $_FILES[$FormName]['name'];
        }
    }
    //新建文件名
    function newName() {
        global $CanUpload, $FormName;
        if ($CanUpload) {
            $FullName = $_FILES[$FormName]['name'];
            $extStr = explode('.', $FullName);
            $count = count($extStr) - 1;
            $ext = $extStr[$count];
            return date('YmdHis') . rand(0, 9) . '.' . $ext;
        }
    }
    //上传文件
    function upload($fileName = '') {
        global $FormName, $Directroy, $CanUpload, $Error, $doUpFile;
        if ($CanUpload) {
            if ($_FILES[$FormName]['size'] == 0) {
                $Error = 3;
                $CanUpload = false;
                return $Error;
                break;
            }
        }
        if ($CanUpload) {
            if ($fileName == '') {
                $fileName = $_FILES[$FormName]['name'];
            }
            $doUpload = @copy($_FILES[$FormName]['tmp_name'], $Directroy . $fileName);
            if ($doUpload) {
                $doUpFile = $fileName;
                chmod($Directroy . $fileName, 0777);
                return true;
            } else {
                $Error = 4;
                return $Error;
            }
        }
    }
    //创建图片缩略图
    function thumb($dscChar = '', $width = 160, $height = 120) {
        global $CanUpload, $Error, $Directroy, $doUpFile, $sm_File;
        if ($CanUpload && $doUpFile != '') {
            $srcFile = $doUpFile;
            if ($dscChar == '') {
                $dscChar = 'sm_';
            }
            $dscFile = $Directroy . $dscChar . $srcFile;
            $data = getimagesize($Directroy . $srcFile, &$info);
            switch ($data[2]) {
                case 1:
                    $im = @imagecreatefromgif($Directroy . $srcFile);
                    break;
                case 2:
                    $im = @imagecreatefromjpeg($Directroy . $srcFile);
                    break;
                case 3:
                    $im = @imagecreatefrompng($Directroy . $srcFile);
                    break;
            }
            $srcW = imagesx($im);
            $srcH = imagesy($im);
            if (($srcW / $width) >= ($srcH / $height)) {
                $temp_height = $height;
                $temp_width = $srcW / ($srcH / $height);
                $src_X = abs(($width - $temp_width) / 2);
                $src_Y = 0;
            } else {
                $temp_width = $width;
                $temp_height = $srcH / ($srcW / $width);
                $src_X = 0;
                $src_Y = abs(($height - $temp_height) / 2);
            }
            $temp_img = imagecreatetruecolor($temp_width, $temp_height);
            imagecopyresized($temp_img, $im, 0, 0, 0, 0, $temp_width, $temp_height, $srcW, $srcH);
            $ni = imagecreatetruecolor($width, $height);
            imagecopyresized($ni, $temp_img, 0, 0, $src_X, $src_Y, $width, $height, $width, $height);
            $cr = imagejpeg($ni, $dscFile);
            chmod($dscFile, 0777);
            if ($cr) {
                $sm_File = $dscFile;
                return true;
            } else {
                $Error = 5;
                return $Error;
            }
        }
    }
    //显示错误参数
    function Err() {
        global $Error;
        return $Error;
    }
    //上传后的文件名
    function UpFile() {
        global $doUpFile, $Error;
        if ($doUpFile != '') {
            return $doUpFile;
        } else {
            $Error = 6;
        }
    }
    //上传文件的路径
    function filePath() {
        global $Directroy, $doUpFile, $Error;
        if ($doUpFile != '') {
            return $Directroy . $doUpFile;
        } else {
            $Error = 6;
        }
    }
    //缩略图文件名称
    function thumbMap() {
        global $sm_File, $Error;
        if ($sm_File != '') {
            return $sm_File;
        } else {
            $Error = 6;
        }
    }
    //显示版本信息
    function ieb_version() {
        return 'swin img class Ver 0.1';
    }
}


本文链接:http://www.phprm.com/tuxiang/fs4511.html

收藏随意^^请保留教程地址.

标签:php缩略图 生成程序

相关文章

发表留言