>  기사  >  백엔드 개발  >  PHP에서 발생하는 썸네일 품질 저하 문제를 해결하기 위한 코드 설명

PHP에서 발생하는 썸네일 품질 저하 문제를 해결하기 위한 코드 설명

jacklove
jacklove원래의
2018-07-06 17:38:261401검색

이 글에서는 주로 PHP로 생성된 품질이 좋지 않은 썸네일에 대한 해결 방법의 코드 예제를 소개합니다. 이는 특정 참고 가치가 있으며 도움이 필요한 친구들이 참고할 수 있습니다.

최근 홈페이지에 순위가 있을 텐데, 댓글이 가장 많은 상위 10명의 사용자 목록이 표시됩니다. 해당 목록에는 해당 사용자가 최근 업로드한 작품의 썸네일 이미지가 있습니다. 사용하면 이미지가 너무 커지고 홈페이지 로딩이 너무 느려지므로 이미지 복사 크기 조정 기능을 사용하려면 위의 썸네일을 사용해야 합니다

나중에 전환했습니다. imagecopyresampled로 변환하고 효과가 표시된 대로 크게 변경되었습니다.

첨부된 전체 코드는 다음과 같습니다.

/** 
* @name thum  缩略图函数 
* @param  sting  $img_name  图片路径 
* @param  int   $max_width 略图最大宽度 
* @param  int   $max_height 略图最大高度 
* @param  sting  $suffix 略图后缀(如"img_x.jpg"代表小图,"img_m.jpg"代表中图,"img_l.jpg"代表大图) 
* @return  void 
*/ 
function thum($img_name,$max_width,$max_height,$suffix){ 
    $img_infos=getimagesize($img_name); 
    $img_height=$img_infos[0];//图片高 
    $img_width=$img_infos[1];//图片宽 
    $img_extension='';//图片后缀名 
    switch($img_infos[2]){ 
      case 1: 
        $img_extension='gif'; 
        break; 
      case 2: 
        $img_extension='jpeg'; 
        break; 
      case 3: 
        $img_extension='png'; 
        break; 
      default: 
        $img_extension='jpeg'; 
        break; 
      } 
    $new_img_size=get_thum_size($img_width,$img_height,$max_width,$max_height);//新的图片尺寸 
 
    //print_r($new_img_size); 
    //die('test'); 
    $img_func='';//函数名称 
    $img_handle='';//图片句柄 
    $thum_handle='';//略图图片句柄 
    switch($img_extension){ 
      case 'jpg': 
        $img_handle=imagecreatefromjpeg($img_name); 
        $img_func='imagejpeg'; 
        break; 
      case 'jpeg': 
        $img_handle=imagecreatefromjpeg($img_name); 
        $img_func='imagejpeg'; 
        break; 
      case 'png': 
        $img_handle=imagecreatefrompng($img_name); 
        $img_func='imagepng'; 
        break; 
      case 'gif': 
        $img_handle=imagecreatefromgif($img_name); 
        $img_func='imagegif'; 
        break; 
      default: 
        $img_handle=imagecreatefromjpeg($img_name); 
        $img_func='imagejpeg'; 
        break; 
      } 
    /****/  
    $quality=100;//图片质量 
    if($img_func==='imagepng' && (str_replace('.', '', PHP_VERSION)>= 512)){//针对php版本大于5.12参数变化后的处理情况 
      $quality=9; 
      }  
    /****/ 
    $thum_handle=imagecreatetruecolor($new_img_size['height'],$new_img_size['width']); 
    if(function_exists('imagecopyresampled')){ 
      imagecopyresampled($thum_handle,$img_handle, 0, 0, 0, 0,$new_img_size['height'],$new_img_size['width'],$img_height,$img_width); 
      }else{ 
        imagecopyresized($thum_handle,$img_handle, 0, 0, 0, 0,$new_img_size['height'],$new_img_size['width'],$img_height,$img_width); 
      } 
    call_user_func_array($img_func,array($thum_handle,get_thum_name($img_name,$suffix),$quality)); 
    imagedestroy($thum_handle);//清除句柄 
    imagedestroy($img_handle);//清除句柄 
  } 
/** 
* @name get_thum_size 获得缩略图的尺寸 
* @param  $width 图片宽 
* @param  $height 图片高 
* @param  $max_width 最大宽度 
* @param  $maxHeight 最大高度 
* @param  array $size; 
*/ 
function get_thum_size($width,$height,$max_width,$max_height){ 
  $now_width=$width;//现在的宽度 
  $now_height=$height;//现在的高度 
  $size=array(); 
  if($now_width>$max_width){//如果现在宽度大于最大宽度 
    $now_height*=number_format($max_width/$width,4); 
    $now_width= $max_width; 
    } 
  if($now_height>$max_height){//如果现在高度大于最大高度 
    $now_width*=number_format($max_height/$now_height,4); 
    $now_height=$max_height; 
    } 
  $size['width']=floor($now_width); 
  $size['height']=floor($now_height); 
  return $size; 
  } 
/** 
*@ name   get_thum_name 获得略图的名称(在大图基础加_x) 
*/ 
function get_thum_name($img_name,$suffix){ 
    $str=explode('#',$img_name); 
    $str1=explode('.',$str[1]); 
    return $str[0].'_'.$suffix.'.'.$str1[1]; 
  }

Summary위는 문제를 해결하는 방법에 대한 이 기사의 코드 예제의 전체 내용입니다. PHP의 품질이 낮은 썸네일 생성 문제가 모든 사람에게 도움이 되기를 바랍니다. 관심 있는 친구들은 이 사이트의 다른 관련 주제를 계속해서 참조할 수 있습니다. 부족한 점이 있으면 지적할 메시지를 남겨주세요. 이 PHP 중국어 웹사이트를 지원해 준 친구들에게 감사드립니다!

당신이 관심을 가질 만한 기사:

PHP로 구현된 스택 데이터 구조에 대한 설명


Laravel 기술 쿼리 빌더에 대한 설명 쿼리 빌더 중첩 체인 호출 방법


PHP 구현 공유 보나치 시퀀스 코드


위 내용은 PHP에서 발생하는 썸네일 품질 저하 문제를 해결하기 위한 코드 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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