PHP图片压缩用法示例
内容摘要
这篇文章主要为大家详细介绍了PHP图片压缩用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
本文介绍了PHP实现图片压缩的
感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!
本文介绍了PHP实现图片压缩的
文章正文
这篇文章主要为大家详细介绍了PHP图片压缩用法示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随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 53 54 55 | <code> <?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; } ?> </code> |
PHP实现图片压缩的两则实例
实例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 140 | <code> <?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></code> |
PHP实现图片压缩的两则实例
注:关于PHP图片压缩用法示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释