>  기사  >  백엔드 개발  >  PHP에서 이미지 형식 변환을 구현하는 방법

PHP에서 이미지 형식 변환을 구현하는 방법

coldplay.xixi
coldplay.xixi원래의
2020-08-24 13:36:413607검색

PHP에서 이미지 형식 변환을 구현하는 방법: 먼저 변환하고 [test.png]에 저장합니다. 코드는 [transform_image($url, 'png', './test.png')]이고 바이너리 결과는 다음과 같습니다. 변환 후 바로 반환됩니다.

PHP에서 이미지 형식 변환을 구현하는 방법

[관련 학습 권장 사항: php 프로그래밍(동영상)]

PHP에서 이미지 형식을 변환하는 방법:

개발 과정에서 변환이 필요한 몇 가지 요구 사항에 항상 직면하게 됩니다. 이미지 형식. 예를 들어 gif를 png로, jpg를 png로

최근 특정 플랫폼의 이미지 파일 인식 기능을 사용했지만 gif 형식을 지원하지 않는 경우 gif를 png 등으로 처리해야 합니다.

php 확장 gd 및 엑시프

implementation

/**
 * 图片格式转换
 * @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 = &#39;png&#39;, $save_path = null)
{
  if (! in_array($to_ext, [&#39;png&#39;, &#39;gif&#39;, &#39;jpeg&#39;, &#39;wbmp&#39;, &#39;webp&#39;, &#39;xbm&#39;])) {
    throw new \Exception(&#39;unsupport transform image to &#39; . $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(&#39;Invalid image type&#39;);
  }
  $function = &#39;image&#39;.$to_ext;
  if ($save_path) {
    return $function($img, $save_path);
  } else {
    $tmp = __DIR__.&#39;/&#39;.uniqid().&#39;.&#39;.$to_ext;
    if ($function($img, $tmp)) {
      $content = file_get_contents($tmp);
      unlink($tmp);
      return $content;
    } else {
      unlink($tmp);
      throw new \Exception(&#39;the file &#39;.$tmp.&#39; can not write&#39;);
    }
  }
}

use

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

에 따라 다름[관련 학습 권장 사항: php 그래픽 튜토리얼]

위 내용은 PHP에서 이미지 형식 변환을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.