ホームページ バックエンド開発 PHPチュートリアル PHPでサムネイルを作成することによる低画質の完璧な解決策

PHPでサムネイルを作成することによる低画質の完璧な解決策

Jun 13, 2016 pm 01:05 PM
height img name width

PHP でサムネイルを作成することによって引き起こされる画質の低下に対する完璧な解決策

最近フォーラムを作成し、トップ 10 のコメント数の多いユーザーのリストを表示するランキングをホームページに作成します。ユーザーが最後にアップロードしたサムネイル この作品では、オリジナル画像を使用すると画像が大きすぎてホームページの読み込みが遅くなりますので、サムネイル画像を使用してください

上記の imagecopyresize 関数を使用すると、次のように表示品質が非常に低くなります

その後、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

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. 画像を表示します; 5. 画像を保存します。 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 では、width は幅を意味します。width 属性は要素のコンテンツ領域の幅を定義します。コンテンツ領域の外側に内側のマージン、境界線、および外側のマージンを追加できます。「要素 {width: value}」を設定するだけで済みます。要素。

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

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

U ディスク pe が画像を読み取れません U ディスク pe が画像を読み取れません Mar 19, 2024 pm 12:07 PM

U ディスクは頻繁に使用されるストレージ デバイスの 1 つです。また、使用中にいくつかの小さな問題が発生することがあります。たとえば、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","イメージ ファイルのアドレス")" を使用します。 2. prop() メソッドの構文は「 $("img").prop("src","画像ファイルのアドレス")」です。

CSS の寸法プロパティの詳細な説明: 高さと幅 CSS の寸法プロパティの詳細な説明: 高さと幅 Oct 21, 2023 pm 12:42 PM

CSS 寸法プロパティの詳細な説明: 高さと幅 フロントエンド開発において、CSS は強力なスタイル定義言語です。その中で、高さと幅は 2 つの最も基本的な寸法属性であり、要素の高さと幅を定義するために使用されます。この記事では、これら 2 つのプロパティを詳細に分析し、具体的なコード例を示します。 1. height 属性 height 属性は、要素の高さを定義するために使用されます。ピクセル、パーセンテージ、または

See all articles