当前位置:首页 > PHP教程 > php应用 > 列表

PHP简单实现图片格式转换(jpg转png,gif转png等)

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-19 10:07:29 浏览: 评论:0 

这篇文章主要介绍了PHP简单实现图片格式转换(jpg转png,gif转png等),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。

需求

开发过程中总会遇到一些需求需要对图片格式进行转换。比如 gif转png,jpg转png

如最近使用某平台的图片文件识别,居然不支持gif格式,那么就需要将gif处理成png等。

依赖

php扩展 gd 和 exif

实现

  1. /** 
  2.  * 图片格式转换 
  3.  * @param string $image_path 文件路径或url 
  4.  * @param string $to_ext 待转格式,支持png,gif,jpeg,wbmp,webp,xbm 
  5.  * @param null|string $save_path 存储路径,null则返回二进制内容,string则返回true|false 
  6.  * @return boolean|string $save_path是null则返回二进制内容,是string则返回true|false 
  7.  * @throws Exception  
  8.  * @author klinson <klinson@163.com> 
  9.  */ 
  10. function transform_image($image_path$to_ext = 'png'$save_path = null) 
  11.   if (! in_array($to_ext, ['png''gif''jpeg''wbmp''webp''xbm'])) { 
  12.     throw new \Exception('unsupport transform image to ' . $to_ext); 
  13.   } 
  14.   switch (exif_imagetype($image_path)) { 
  15.     case IMAGETYPE_GIF : 
  16.       $img = imagecreatefromgif($image_path); 
  17.       break
  18.     case IMAGETYPE_JPEG : 
  19.     case IMAGETYPE_JPEG2000: 
  20.       $img = imagecreatefromjpeg($image_path); 
  21.       break
  22.     case IMAGETYPE_PNG: 
  23.       $img = imagecreatefrompng($image_path); 
  24.       break
  25.     case IMAGETYPE_BMP: 
  26.     case IMAGETYPE_WBMP: 
  27.       $img = imagecreatefromwbmp($image_path); 
  28.       break
  29.     case IMAGETYPE_XBM: 
  30.       $img = imagecreatefromxbm($image_path); 
  31.       break
  32.     case IMAGETYPE_WEBP: //(从 PHP 7.1.0 开始支持) 
  33.       $img = imagecreatefromwebp($image_path); 
  34.       break
  35.     default : 
  36.       throw new \Exception('Invalid image type'); 
  37.   } 
  38.   $function = 'image'.$to_ext
  39.   if ($save_path) { 
  40.     return $function($img$save_path); 
  41.   } else { 
  42.     $tmp = __DIR__.'/'.uniqid().'.'.$to_ext
  43.     if ($function($img$tmp)) { 
  44.       $content = file_get_contents($tmp); 
  45.       unlink($tmp); 
  46.       return $content
  47.     } else { 
  48.       unlink($tmp); 
  49.       throw new \Exception('the file '.$tmp.' can not write'); 
  50.     } 
  51.   } 

使用

  1. // 转换后保存在test.png 
  2. transform_image($url'png''./test.png'); 
  3. transform_image($filepath'png''./test.png'); 
  4. // 转换后二进制结果直接返回 
  5. transform_image($url'png'); 
  6. transform_image($filepath'png');

Tags: PHP图片格式转换

分享到: