视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php图片类型如何转换
2020-11-02 18:14:05 责编:小采
文档


php图片类型转换的实现方法:首先安装php扩展gd和exif;然后通过“transform_image”方法实现图片类型转换;最后返回转换结果即可。

推荐:《PHP视频教程》

需求

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

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

依赖

php扩展 gd 和 exif

实现

/**
 * 图片格式转换
 * @param string $image_path 文件路径或url
 * @param string $to_ext 待转格式,支持png,gif,jpeg,wbmp,webp,xbm
 * @param null|string $save_path 存储路径,null则返回二进制内容,string则返回true|false
 * @return boolean|string $save_path是null则返回二进制内容,是string则返回true|false
 * @throws Exception 
 * @author klinson <klinson@163.com>
 */
function transform_image($image_path, $to_ext = 'png', $save_path = null)
{
 if (! in_array($to_ext, ['png', 'gif', 'jpeg', 'wbmp', 'webp', 'xbm'])) {
 throw new Exception('unsupport transform image to ' . $to_ext);
 }
 switch (exif_imagetype($image_path)) {
 case IMAGETYPE_GIF :
 $img = imagecreatefromgif($image_path);
 break;
 case IMAGETYPE_JPEG :
 case IMAGETYPE_JPEG2000:
 $img = imagecreatefromjpeg($image_path);
 break;
 case IMAGETYPE_PNG:
 $img = imagecreatefrompng($image_path);
 break;
 case IMAGETYPE_BMP:
 case IMAGETYPE_WBMP:
 $img = imagecreatefromwbmp($image_path);
 break;
 case IMAGETYPE_XBM:
 $img = imagecreatefromxbm($image_path);
 break;
 case IMAGETYPE_WEBP: //(从 PHP 7.1.0 开始支持)
 $img = imagecreatefromwebp($image_path);
 break;
 default :
 throw new Exception('Invalid image type');
 }
 $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);
 throw new Exception('the file '.$tmp.' can not write');
 }
 }
}

使用

// 转换后保存在test.png
transform_image($url, 'png', './test.png');
transform_image($filepath, 'png', './test.png');
// 转换后二进制结果直接返回
transform_image($url, 'png');
transform_image($filepath, 'png');

下载本文
显示全文
专题