백엔드 개발 PHP 튜토리얼 PHP创建缩略图造成图片质量低上的完美解决办法

PHP创建缩略图造成图片质量低上的完美解决办法

Jun 13, 2016 am 10:58 AM
height img name width

PHP创建缩略图造成图片质量低下的完美解决方法

近期弄个论坛,在首页要有个排名,显示评论最多的前十位用户的列表,列表有个略图是用户最新上传的作品,如果使用原来的图,图片过大,首页加载过慢,因此要使用略图

以上来使用imagecopyresized这个函数,显示质量很差如图

后来改用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];	}
로그인 후 복사



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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

img 파일을 여는 방법 img 파일을 여는 방법 Sep 18, 2023 am 09:40 AM

img 파일을 여는 방법에는 가상 광학 드라이브 소프트웨어 사용, 압축 소프트웨어 사용 및 특수 도구 사용이 포함됩니다. 자세한 소개: 1. 가상 광학 드라이브 소프트웨어를 사용하여 가상 광학 드라이브 소프트웨어를 열고, 다운로드하고, img 파일을 마우스 오른쪽 버튼으로 클릭하고, "다음 프로그램으로 열기" 또는 "관련 프로그램"을 선택하고, 팝업에서 설치된 가상 광학 드라이브 소프트웨어를 선택합니다. -up 대화 상자, 가상 광학 드라이브 소프트웨어는 img 파일을 자동으로 로드하고 가상 광학 드라이브에서 디스크 이미지로 사용합니다. 가상 광학 드라이브에서 디스크 아이콘을 두 번 클릭하면 img 파일을 열고 해당 콘텐츠에 액세스할 수 있습니다. 등.

img 파일을 여는 방법 img 파일을 여는 방법 Jul 06, 2023 pm 04:17 PM

img 파일을 여는 방법: 1. img 파일 경로를 확인합니다. 2. img 파일 오프너를 사용합니다. 3. 열기 방법을 선택합니다. 4. 사진을 봅니다. img 파일은 일반적으로 사진 데이터를 저장하는 데 사용되는 일반적으로 사용되는 이미지 파일 형식입니다.

img의 형식은 무엇입니까? img의 형식은 무엇입니까? Mar 17, 2023 am 10:33 AM

img는 주로 플로피 디스크 이미지 파일을 생성하는 데 사용되는 파일 압축 형식입니다. 전체 플로피 디스크 또는 전체 CD의 내용을 압축하는 데 사용할 수 있으며 확장자가 ".IMG"인 파일은 이 파일 형식을 사용하여 생성됩니다. img 파일에는 "Ehfa_HeaderTag", "Ehfa_File" 및 "Ehfa_Entry"라는 3개의 기본 노드가 포함되어 있습니다.

html의 너비는 무엇을 의미합니까? html의 너비는 무엇을 의미합니까? Jun 03, 2021 pm 02:15 PM

HTML5에서 너비는 너비를 의미합니다. 너비 속성은 콘텐츠 영역 외부에 내부 여백, 테두리 및 외부 여백을 추가할 수 있습니다. 요소.

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

U 디스크 PE가 img를 읽을 수 없습니다. U 디스크 PE가 img를 읽을 수 없습니다. Mar 19, 2024 pm 12:07 PM

U 디스크는 자주 사용되는 저장 장치 중 하나입니다. 사용 중에도 몇 가지 사소한 문제가 있습니다. 예를 들어 U 디스크를 어떻게 해결할 수 있습니까? USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 USB 플래시 드라이브를 컴퓨터에 삽입한 후 시작 메뉴를 클릭하고 제어판을 선택한 후 치워두세요! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 제어판에서 장치 관리자를 찾아 두 번 클릭하세요. 보관해라! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 장치 관리자의 기본 인터페이스에서 범용 직렬 버스 컨트롤러를 찾아 치워두세요! USB 플래시 드라이브를 읽을 수 없습니까? USB 대용량 저장 장치를 쉽게 찾고, 선택하고, 마우스 오른쪽 버튼을 클릭하고, 제거를 찾아 치워두는 방법을 알려주는 4단계! USB 플래시 드라이브를 읽을 수 없습니까? 문제를 쉽게 해결하는 방법을 알려주는 4단계 토론을 위한 메시지를 남겨주세요!

jquery에서 img의 src 속성을 변경하는 방법 jquery에서 img의 src 속성을 변경하는 방법 Mar 03, 2022 pm 03:41 PM

jquery에서 img src 속성을 변경하는 방법: 1. attr() 속성을 사용하고 "$("img").attr("src","The address of the image file")" 구문을 사용합니다. prop() 메서드, 구문 " $("img").prop("src","이미지 파일의 주소")".

CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 Oct 21, 2023 pm 12:42 PM

CSS 차원 속성에 대한 자세한 설명: 높이 및 너비 프런트 엔드 개발에서 CSS는 강력한 스타일 정의 언어입니다. 그 중 높이와 너비는 요소의 높이와 너비를 정의하는 데 사용되는 가장 기본적인 두 가지 치수 속성입니다. 이 기사에서는 이 두 가지 속성을 자세히 분석하고 구체적인 코드 예제를 제공합니다. 1. 높이 속성 높이 속성은 요소의 높이를 정의하는 데 사용됩니다. 픽셀, 백분율 또는

See all articles