php图片上传并生成缩略图效果
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-19 14:31:34 浏览: 评论:0
本教程是一款php图片上传然后,把上传的图片生成小图片,是一款非常好的文件上传类,如果你正在找类程序可以进来看看.
php图片上传并生成缩略图,实例代码如下:
- function uploadimage($upname,$smallmark=1,$dstsw,$dstsh=0,$path_dim,$path_xim,$newname,$smallname=0,$filetype="null") {
- global $webaddr,$_files,$my;
- $phpv=str_replace('.', '', php_version);
- $filename=$upname;
- $max_file_size = 2147483648; //上传文件大小限制, 单位byte 2m
- $path_im = $path_dim; //生成大图保存文件夹路径
- $path_sim = $path_xim; //缩略图保存文件夹路径
- $simclearly=75;
- $simclearlypng =$phpv>=512?7:75; //缩略图清晰度0-100,数字越大越清晰,文件尺寸越大
- $smallmark = $smallmark; //是否生成缩略图(1为加生成,其他为不);
- $dst_sw =$dstsw; //定义缩略图宽度,高度我采用等比例缩放,所以只要比较宽度就可以了
- $uptypes=array(
- 'image/jpg',
- 'image/jpeg',
- 'image/png',
- 'image/pjpeg',
- 'image/gif',
- 'image/bmp',
- 'image/x-png'
- );
- if (!is_uploaded_file($_files[$filename][tmp_name])) {
- dsetcookie('setok','upload1');
- header("location:111cn.net/profile");
- exit;
- }
- $file = $_files[$filename];
- $pinfo = pathinfo($file["name"]);
- if ($filetype=="null") {
- $filetype = $pinfo['extension'];
- }
- if (!in_array(strtolower($pinfo['extension']),array("jpg","jpeg","png","gif"))) {
- dsetcookie('setok','upload3');
- header("location:111cn.net/profile");
- exit;
- }
- if($max_file_size < $file["size"]) {//检查文件大小
- dsetcookie('setok','upload2');
- header("location:111cn.net/profile");
- exit;
- }
- if(!in_array($file["type"],$uptypes)) { //检查文件类型
- dsetcookie('setok','upload3');
- header("location:111cn.net/profile");
- exit;
- }
- if(!file_exists($path_im)) {
- mkdir($path_im);
- }
- $filename = $file["tmp_name"];
- $im_size = getimagesize($filename);
- $src_w = $im_size[0];
- $src_h = $im_size[1];
- $src_type = $im_size[2];
- $all_path = $path_im.$newname.".".$filetype;//路径+文件名,目前以上传时间命名
- if (file_exists($all_path)) {
- @unlink($all_path);
- }
- if(!move_uploaded_file ($filename,$all_path)) {
- dsetcookie('setok','upload4');
- header("location:111cn.net/profile");
- exit;
- }
- $pinfo = pathinfo($all_path);
- $fname = $pinfo[basename];
- switch($src_type) {//判断源图片文件类型
- case 1://gif
- $src_im = @imagecreatefromgif($all_path);//从源图片文件取得图像
- break;
- case 2://jpg
- $src_im = @imagecreatefromjpeg($all_path);
- break;
- case 3://png
- $src_im = @imagecreatefrompng($all_path);
- break;
- //case 6:
- //$src_im=imagecreatefromwbmp($all_path);
- //break;
- default:
- dsetcookie('setok','upload3');
- header("location:111cn.net/profile");
- exit;
- }
- if($smallmark == 1) {
- if(!file_exists($path_sim)) {//检查缩略图目录是否存在,不存在创建
- mkdir($path_sim);
- }
- if ($smallname) $newname=$smallname;
- $sall_path = $path_sim.$newname.".".$filetype;
- if (file_exists($sall_path)) {
- @unlink($sall_path);
- }
- if($src_w <= $dst_sw) { // 原图尺寸 <= 缩略图尺寸
- if ($dstsh==0) {
- $dst_sim = @imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图
- $sx=$sy=0;
- } else {
- $dst_sim = @imagecreatetruecolor($dstsw,$dstsh); //新建缩略图真彩位图
- $sx=($dstsw-$src_w)/2;
- $sy=($dstsh-$src_h)/2;
- }
- $img = @imagecreatefrompng("images/phbg.png");
- @imagecopymerge($dst_sim,$img,0,0,0,0,$dstsw,$dstsh,100); //原图图像写入新建真彩位图中
- @imagecopymerge($dst_sim,$src_im,$sx,$sy,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中
- }
- if($src_w > $dst_sw) { // 原图尺寸 > 缩略图尺寸
- $dst_sh = $dst_sw/$src_w*$src_h;
- if ($dst_sh<$dstsh) {
- $dst_sh=$dstsh;
- $dst_sw=$dst_sh/$src_h*$src_w;
- }
- if ($dstsh==0) {
- $dst_sim = @imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸)
- } else {
- $dst_sim = @imagecreatetruecolor($dstsw,$dstsh); //新建缩略图真彩位图(等比例缩小原图尺寸)
- }
- @imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中
- }
- switch($src_type) {
- case 1:@imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件,图片清晰度0-100
- break;
- case 2:@imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件,图片清晰度0-100
- break;
- case 3:@imagepng($dst_sim,$sall_path,$simclearlypng);//生成png文件,图片清晰度0-100
- break;
- //case 6:
- //imagewbmp($dst_sim,$sall_path);
- break;
- }//开源代码phpfensi.com
- //释放缓存
- @imagedestroy($dst_sim);
- }
- @imagedestroy($src_im);
- return $newname.".".$filetype;
- }
Tags: php图片上传 php生成缩略图
- 上一篇:php 生成各类统计图实例
- 下一篇:php 获取图片高宽与宽度代码
相关文章
- ·php 图片上传代码,支持水印,缩略图(2014-08-19)
- ·php图片上传实现代码(2014-08-19)
- ·php图片上传类同时可生成缩略图与加水印(2014-08-19)
- ·php 图片上传代码,具有生成缩略图与增加水印功能(2014-08-19)
- ·php 图片上传并预览效果(2014-09-09)
- ·php图片上传加水印,自动增加水印(2014-09-09)
- ·php图片上传自动给图片加水印(2014-09-22)
- ·php实现图片上传、剪切功能(2019-07-28)
- ·php用wangeditor3实现图片上传功能(2021-12-11)
- ·php生成缩略图的例子(2014-06-19)
- ·php简单实用生成缩略图代码(2014-08-17)
- ·PHP生成同比例的缩略图实现程序(2014-08-18)
- ·php生成缩略图类(2014-08-18)
- ·php生成缩略图经典类(2014-08-19)
- ·php生成缩略图类,支持自定义高和宽,还支持按高和宽截图(2014-08-19)
- ·php图片按比较生成缩略图片代码(2014-08-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)