PHP 는 그림 형식 변환 을 간단하게 실현 합 니 다(jpg 회전 png,gif 회전 png 등)

수요
개발 과정 에서 이미지 형식 을 바 꿔 야 하 는 수요 가 있 을 것 이다.예 를 들 어 gif 회전 png,jpg 회전 png
최근 한 플랫폼 의 이미지 파일 인식 을 사용 하면 gif 형식 이 지원 되 지 않 는 다 면 gif 를 png 로 처리 해 야 합 니 다.
의지 하 다
pp 확장 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 <[email protected]>
 */
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');
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기