php如何实现截取不同规格尺寸的图片?
php如何实现截取不同规格尺寸的图片?,相信大部分人都还没学会这个技能,为了让大家学会,给大家总结了以下内容,话不多说,一起往下看吧。
(一)getpic.php
<?php//获取图片参数$basedir=dirname(dirname(__FILE__))."/file/";$src=isset($_GET['src'])?$_GET['src']:NULL;$w=isset($_GET['w'])?$_GET['w']:200;$h=isset($_GET['h'])?$_GET['h']:'';$src=$basedir.$src;//原图是否存在if(!$src){//$src='defaultImage/no_photo01.gif';$src='p_w_picpaths/nullpic/nullpic1.jpg';}//缓存图片$tempfile=dirname(__FILE__).'/temp/'.$w.'x'.$h.'_'.str_replace(array('/','\\'),'_',$src);if(file_exists($tempfile)&&filemtime($tempfile)>filemtime($src)){$src=$tempfile;}else{require_once'gcImage.php';list($swidth,$sheight)=getp_w_picpathsize($src);$p_w_picpath=newgcImage();if(empty($h))$h=$w*$sheight/$swidth;$src=$p_w_picpath->imagickmakethumb($src,$tempfile,$w,$h,90);}if(empty($src)){//$src='defaultImage/no_photo01.gif';$src='p_w_picpaths/nullpic/nullpic1.jpg';}//下载该图片$file_extension=strtolower(substr(strrchr($src,'.'),1));switch($file_extension){case'gif':$file_mime='p_w_picpath/gif';break;case'png':$file_mime='p_w_picpath/png';break;case'jpg':$file_mime='p_w_picpath/jpg';break;default:$file_mime=mime_content_type($src);}$length=filesize($src);Header("Content-type:$file_mime;charset=UTF-8");Header('Accept-Ranges:bytes');Header('Accept-Length:'.$length);//Header('Content-Disposition:p_w_upload;filename='.$file_name);$file=fopen($src,'r');echofread($file,$length);fclose($file);
(2)gcImage.php
<?php/***画像操作*gcImageMagickService*@authorFounder*@version1.0*@exlcude作成日:2010/11/05*/classgcImage{/*构造函数-生成缩略图+水印,参数说明:$srcFile-图片文件名,$dstFile-另存文件名,$markwords-水印文字,$markp_w_picpath-水印图片,$dstW-图片保存宽度,$dstH-图片保存高度,$rate-图片保存品质*///makethumb("a.jpg","b.jpg","50","50");functionmakethumb($srcFile,$dstFile,$dstW,$dstH,$rate=100,$markwords=null,$markp_w_picpath=null){$data=GetImageSize($srcFile);switch($data[2]){case1:$im=@ImageCreateFromGIF($srcFile);break;case2:$im=@ImageCreateFromJPEG($srcFile);break;case3:$im=@ImageCreateFromPNG($srcFile);break;}if(!$im)returnFalse;$srcW=ImageSX($im);$srcH=ImageSY($im);$dstX=0;$dstY=0;if($srcW*$dstH<$srcH*$dstW){$fdstH=round($srcH*$dstW/$srcW);$dstY=floor(($dstH-$fdstH)/2);$fdstW=$dstW;}else{$fdstW=round($srcW*$dstH/$srcH);$dstX=floor(($dstW-$fdstW)/2);$fdstH=$dstH;}$ni=ImageCreateTrueColor($dstW,$dstH);$dstX=($dstX>($dstW/2))?floor($dstW/2):$dstX;$dstY=($dstY>($dstH/2))?floor($dstH/2):$dstY;$white=ImageColorAllocate($ni,255,255,255);$black=ImageColorAllocate($ni,0,0,0);p_w_picpathfilledrectangle($ni,0,0,$dstW,$dstH,$white);//填充背景色ImageCopyResized($ni,$im,$dstX,$dstY,0,0,$fdstW,$fdstH,$srcW,$srcH);if($markwords!=null){$markwords=iconv("gb2312","UTF-8",$markwords);//转换文字编码ImageTTFText($ni,20,30,450,560,$black,"simhei.ttf",$markwords);//写入文字水印//参数依次为,文字大小|偏转度|横坐标|纵坐标|文字颜色|文字类型|文字内容}elseif($markp_w_picpath!=null){$wp_w_picpath_data=GetImageSize($markp_w_picpath);switch($wp_w_picpath_data[2]){case1:$wp_w_picpath=@ImageCreateFromGIF($markp_w_picpath);break;case2:$wp_w_picpath=@ImageCreateFromJPEG($markp_w_picpath);break;case3:$wp_w_picpath=@ImageCreateFromPNG($markp_w_picpath);break;}p_w_picpathcopy($ni,$wp_w_picpath,500,560,0,0,88,31);//写入图片水印,水印图片大小默认为88*31p_w_picpathdestroy($wp_w_picpath);}ImageJpeg($ni,$dstFile,$rate);touch($dstFile);p_w_picpathdestroy($ni);p_w_picpathdestroy($im);return$dstFile;}/*构造函数-生成缩略图+水印,参数说明:$srcFile-图片文件名,$dstFile-另存文件名,$markwords-水印文字,$markp_w_picpath-水印图片,$dstW-图片保存宽度,$dstH-图片保存高度,$rate-图片保存品质*///makethumb("a.jpg","b.jpg","50","50");functionimagickmakethumb($srcFile,$dstFile,$dstW,$dstH,$rate=100,$markwords=null,$markp_w_picpath=null){try{$p_w_picpath=newImagick($srcFile);$p_w_picpath->setImageCompression(Imagick::COMPRESSION_JPEG);$p_w_picpath->setImageCompressionQuality($rate);$p_w_picpath->setImageFormat('JPEG');$p_w_picpath->cropThumbnailImage($dstW,$dstH);$p_w_picpath->stripImage();if(!empty($markwords)){$draw=newImagickDraw();$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);$draw->setFont('simhei.ttf');$draw->setFontSize(12);$draw->setFillColor('#000');$p_w_picpath->annotateImage($draw,6,6,0,$markwords);}elseif(!empty($markp_w_picpath)){}$p_w_picpath->writeImage($dstFile);$p_w_picpath->clear();$p_w_picpath->destroy();return$dstFile;}catch(Exception$e){returnfalse;}}}
以上就是php实现截取不同规格尺寸的图片的方法,详细使用情况还需要大家自己亲自动手使用过才能领会。如果想了解更多相关内容,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。