PHP实现图片压缩的两则实例(转)
本文介绍了PHP实现图片压缩的两种方法,读者可以根据具体应用参考或加以改进,以适应自身应用需求!废话不多说,主要代码部分如下:
实例1:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
<?php /** * desription 压缩图片 * @param sting $imgsrc 图片路径 * @param string $imgdst 压缩后保存路径 */function image_png_size_add($imgsrc,$imgdst){ list($width,$height,$type)=getimagesize($imgsrc); $new_width = ($width>600?600:$width)*0.9; $new_height =($height>600?600:$height)*0.9; switch($type){ case 1: $giftype=check_gifcartoon($imgsrc); if($giftype){ header('Content-Type:image/gif'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromgif($imgsrc); imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagejpeg($image_wp, $imgdst,75); imagedestroy($image_wp); } break; case 2: header('Content-Type:image/jpeg'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefromjpeg($imgsrc); imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagejpeg($image_wp, $imgdst,75); imagedestroy($image_wp); break; case 3: header('Content-Type:image/png'); $image_wp=imagecreatetruecolor($new_width, $new_height); $image = imagecreatefrompng($imgsrc); imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); imagejpeg($image_wp, $imgdst,75); imagedestroy($image_wp); break; } } /** * desription 判断是否gif动画 * @param sting $image_file图片路径 * @return boolean t 是 f 否 */function check_gifcartoon($image_file){ $fp = fopen($image_file,'rb'); $image_head = fread($fp,1024); fclose($fp); return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true; } ?> |
实例2:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
<?php/*----------------------------------------------------------------------函数:调整图片尺寸或生成缩略图返回:True/False参数: $Image 需要调整的图片(含路径) $Dw=450 调整时最大宽度;缩略图时的绝对宽度 $Dh=450 调整时最大高度;缩略图时的绝对高度 $Type=1 1,调整尺寸; 2,生成缩略图$path='img/';//路径$phtypes=array( 'img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png');Function Img($Image,$Dw=450,$Dh=450,$Type=1){ IF(!File_Exists($Image)){ Return False; } //如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值 IF($Type!=1){ Copy($Image,Str_Replace(".","_x.",$Image)); $Image=Str_Replace(".","_x.",$Image); } //取得文件的类型,根据不同的类型建立不同的对象 $ImgInfo=GetImageSize($Image); Switch($ImgInfo[2]){ Case 1: $Img = @ImageCreateFromGIF($Image); Break; Case 2: $Img = @ImageCreateFromJPEG($Image); Break; Case 3: $Img = @ImageCreateFromPNG($Image); Break; } //如果对象没有创建成功,则说明非图片文件 IF(Empty($Img)){ //如果是生成缩略图的时候出错,则需要删掉已经复制的文件 IF($Type!=1){Unlink($Image);} Return False; } //如果是执行调整尺寸操作则 IF($Type==1){ $w=ImagesX($Img); $h=ImagesY($Img); $width = $w; $height = $h; IF($width>$Dw){ $Par=$Dw/$width; $width=$Dw; $height=$height*$Par; IF($height>$Dh){ $Par=$Dh/$height; $height=$Dh; $width=$width*$Par; } }ElseIF($height>$Dh){ $Par=$Dh/$height; $height=$Dh; $width=$width*$Par; IF($width>$Dw){ $Par=$Dw/$width; $width=$Dw; $height=$height*$Par; } }Else{ $width=$width; $height=$height; } $nImg = ImageCreateTrueColor($width,$height); //新建一个真彩色画布 ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);//重采样拷贝部分图像并调整大小 ImageJpeg ($nImg,$Image); //以JPEG格式将图像输出到浏览器或文件 Return True; //如果是执行生成缩略图操作则 }Else{ $w=ImagesX($Img); $h=ImagesY($Img); $width = $w; $height = $h; $nImg = ImageCreateTrueColor($Dw,$Dh); IF($h/$w>$Dh/$Dw){ //高比较大 $width=$Dw; $height=$h*$Dw/$w; $IntNH=$height-$Dh; ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h); }Else{ //宽比较大 $height=$Dh; $width=$w*$Dh/$h; $IntNW=$width-$Dw; ImageCopyReSampled($nImg, $Img, -$IntNW/1.8, 0, 0, 0, $width, $Dh, $w, $h); } ImageJpeg ($nImg,$Image); Return True; }}?><html><body><form method="post" enctype="multipart/form-data" name="form1"> <table> <tr><td>上传图片</td></tr> <tr><td><input type="file" name="photo" size="20" /></td></tr> <tr><td><input type="submit" value="上传"/></td></tr> </table> 允许上传的文件类型为:<?=implode(', ',$phtypes)?></form><?php if($_SERVER['REQUEST_METHOD']=='POST'){ if (!is_uploaded_file($_FILES["photo"][tmp_name])){ echo "图片不存在"; exit(); } if(!is_dir('img')){//路径若不存在则创建 mkdir('img'); } $upfile=$_FILES["photo"]; $pinfo=pathinfo($upfile["name"]); $name=$pinfo['basename'];//文件名 $tmp_name=$upfile["tmp_name"]; $file_type=$pinfo['extension'];//获得文件类型 $showphpath=$path.$name; if(in_array($upfile["type"],$phtypes)){ echo "文件类型不符!"; exit(); } if(move_uploaded_file($tmp_name,$path.$name)){ echo "成功!"; Img($showphpath,100,800,2); } echo "<img src=\"".$showphpath."\" />"; }?></body></html> |
http://www.jb51.net/article/52380.htm
PHP实现图片压缩的两则实例(转)的更多相关文章
- node图片压缩的两员大将
一.ishrink 全局安装 npm i ishrink -g 1.按url方式压缩 本地图片地址 sk -u C:\Users\admin\Desktop\images\img 网络图片地址 sk ...
- iOS 图片压缩方法
iOS 图片压缩方法 两种图片压缩方法 两种压缩图片的方法:压缩图片质量(Quality),压缩图片尺寸(Size). 压缩图片质量 NSData *data = UIImageJPEGReprese ...
- Nginx网络压缩 CSS压缩 图片压缩 JSON压缩
一.序言 使用Nginx作为web应用服务时,会代理如下常见文件:js.css.JSON.图片等,本文提供基于Nginx内置的压缩技术,提供网络请求响应速度的解决方案. 1.网络压缩原理 网络压缩的原 ...
- 使用HTML5的两个api,前端js完成图片压缩
主要用了两个html5的 API,一个file,一个canvas,压缩主要使用cnavas做的,file是读取文件,之后把压缩好的照片放入内存,最后内存转入表单下img.src,随着表单提交. 照片是 ...
- C#实现对图片文件的压缩、裁剪操作实例
本文实例讲述了C#对图片文件的压缩.裁剪操作方法,在C#项目开发中非常有实用价值.分享给大家供大家参考.具体如下: 一般在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便 ...
- android图片压缩的3种方法实例
android 图片压缩方法: 第一:质量压缩法: private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = ...
- 图片压缩CompressUtil解析
CompressUtil 流程图: CompressUtil 类 具体解释 public class CompressUtil { /** * 终于封装的压缩方法 * @param imgPath * ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- 三款不错的图片压缩上传插件(webuploader+localResizeIMG4+LUploader)
涉及到网页图片的交互,少不了图片的压缩上传,相关的插件有很多,相信大家都有用过,这里我就推荐三款,至于好处就仁者见仁喽: 1.名气最高的WebUploader,由Baidu FEX 团队开发,以H5为 ...
随机推荐
- MySQL数据文件介绍及存放位置
怎样查看MySql数据库物理文件存放位置? 使用命令行查找: show global variables like '%datadir%'; 我查找的位置:C:\ProgramData\MySQL\M ...
- 登陆weblogic后页面控制台卡主
输入http://localhost:7001/console进入控制页面,能登陆进去,但是登陆进去后页面就马上卡死,可以看到页面头部,其余都显示不出来. 重启后启动访问,能够正常进入,关闭weblo ...
- Hearbeat 介绍
Hearbeat 介绍 Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reli ...
- R中的数据重塑函数
1.去除重复数据 函数:duplicated(x, incomparables = FALSE, MARGIN = 1,fromLast = FALSE, ...),返回一个布尔值向量,重复数据的第一 ...
- PHP面试题 – 培训学校真实面试内部资料
1.PHP解析URL是哪个函数? parse_url() 是讲URL解析成有固定键值的数组的函数. $ua=parse_url('http://username:password@hostname/p ...
- IDEA使用前的各种基本设置(转)
先搞个链接,以后自己慢慢总结:传送门
- python 中文字符的处理
刚开始学习python的时候,都是对这英文的翻译书学习的.没有解除到中文编码的相关问题,直到自己用python去做相关的项目的时候才发先中文编码问题真的非常头疼啊.这里分享一下本人所了解的一些经验. ...
- wampserver安装在服务器中,但是mysql不能远程登录的解决方案
利用mysql workbench或者Navicat连接服务器的mysql时,有时候会出现拒绝访问, 因为在mysql中没有赋予其他用户权限,只能本地登录,所以要进行设置. 设置如下: 打开mysql ...
- jenkins tomcat
tomcat增加用户配置: <role rolename="tomcat"/> <role rolename="role1"/> < ...
- uvalive 6938 区间dp
看到n范围和给的区间看着就像区间dp 然后怎么cmp感觉都没法进行区间合并 n的300误导了下 没有注意离散化之后对时间可以dp 然而这个dp感觉不太经得起证明的样子... dp[i][j] -> ...