PHP简单实现图片格式转换(jpg转png,gif转png等)
需求
开发过程中总会遇到一些需求需要对图片格式进行转换。比如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; caseIMAGETYPE_JPEG: caseIMAGETYPE_JPEG2000: $img=imagecreatefromjpeg($image_path); break; caseIMAGETYPE_PNG: $img=imagecreatefrompng($image_path); break; caseIMAGETYPE_BMP: caseIMAGETYPE_WBMP: $img=imagecreatefromwbmp($image_path); break; caseIMAGETYPE_XBM: $img=imagecreatefromxbm($image_path); break; caseIMAGETYPE_WEBP://(从PHP7.1.0开始支持) $img=imagecreatefromwebp($image_path); break; default: thrownew\Exception('Invalidimagetype'); } $function='image'.$to_ext; if($save_path){ return$function($img,$save_path); }else{ $tmp=__DIR__.'/'.uniqid().'.'.$to_ext; if($function($img,$tmp)){ $content=file_get_contents($tmp); unlink($tmp); return$content; }else{ unlink($tmp); thrownew\Exception('thefile'.$tmp.'cannotwrite'); } } }
使用
//转换后保存在test.png transform_image($url,'png','./test.png'); transform_image($filepath,'png','./test.png'); //转换后二进制结果直接返回 transform_image($url,'png'); transform_image($filepath,'png');
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。