需求在开发过程中,总会遇到一些需要图片格式转换的需求。比如gif转png,jpg转png,如果最近使用了某平台的图片文件识别,但是不支持gif格式,那么就需要将gif处理成png等。依赖php扩展gd和exif实现/***图片格式转换*@paramstring$image_path文件路径或url*@paramstring$to_ext需要转换的格式,支持png,gif,jpeg,wbmp,webp,xbm*@paramnull|string$save_path存储路径,null返回二进制内容,string返回true|false*@returnboolean|string$save_path为null,返回二进制内容,string返回true|false*@throwsException*@authorklinson*/functiontransform_image($image_path,$to_ext='png',$save_path=null){if(!in_array($to_ext,['png','gif','jpeg','wbmp','webp','xbm'])){thrownew\Exception('unsupporttransformimageto'.$to_ext);}switch(exif_imagetype($image_path)){caseIMAGETYPE_GIF:$img=imagecreatefromgif($image_path)break;案例IMAGETYPE_JPEG:案例IMAGETYPE_JPEG2000:$img=imagecreatefromjpeg($image_path);休息;案例IMAGETYPE_PNG:$img=imagecreatefrompng($image_path);休息;案例IMAGETYPE_BMP:案例IMAGETYPE_WBMP:$img=imagecreatefromwbmp($image_path);休息;案例IMAGETYPE_XBM:$img=imagecreatefromxbm($image_path);休息;caseIMAGETYPE_WEBP://(从PHP7.1.0开始支持)$img=imagecreatefromwebp($image_path);休息;默认值:thrownew\Exception('Invalidimagetype');}$function='image'.$to_ext;如果($save_path){返回$function($img,$save_path);}else{$tmp=__DIR__.'/'.uniqid().'.'.$to_ext;如果($function($img,$tmp)){$content=file_get_contents($tmp);取消链接($tmp);返回$内容;}else{取消链接($tmp);thrownew\Exception('文件'.$tmp.'无法写入');}}}使用//保存在test.png中transform_image($url,'png','./test.png');transform_image($filepath,'png','./test.png');//转换后的二进制结果直接返回给transform_image($url,'png');transform_image($filepath,'png');联系我如果还有不明白的,或者本文资源下载不了,可以联系我,或者加我QQ群(群里有资源可以下载),大家可以帮忙交流一下: