国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php生成縮略圖填充白邊(等比縮略圖方案)

2024-05-04 23:20:14
字體:
來源:轉載
供稿:網友

網站上傳圖片后生成縮略圖應該是非常常用的功能了,通常來講為了網站顯示美觀,縮略圖會是同樣尺寸,比如最近筆者做的一個站點,縮略圖規格要求都是160×120。但是如果上傳的圖片比例和縮略圖不一致,直接縮放的話就會導致圖片變形,這樣體驗肯定就不好了。于是筆者想了一個折中的辦法,就是縮小后添加白邊的方法。

源圖,尺寸是600×366:

php生成縮略圖填充白邊(等比縮略圖方案)

最終生成的效果圖:

php生成縮略圖填充白邊(等比縮略圖方案)

代碼相對比較長些,下面簡單說下思路:

先將源圖按比例生成縮略圖,并且寬不大于160、高不大于120。例如上圖會先生成160×98的縮略圖。
新建一個160×120的白色背景圖片,將上一步生成的縮略圖居中放置到這張圖片上就OK了。
最終代碼如下:

復制代碼 代碼如下:


//源圖的路徑,可以是本地文件,也可以是遠程圖片
$src_path = '1.jpg';
//最終保存圖片的寬
$width = 160;
//最終保存圖片的高
$height = 120;

//源圖對象
$src_image = imagecreatefromstring(file_get_contents($src_path));
$src_width = imagesx($src_image);
$src_height = imagesy($src_image);

//生成等比例的縮略圖
$tmp_image_width = 0;
$tmp_image_height = 0;
if ($src_width / $src_height >= $width / $height) {
    $tmp_image_width = $width;
    $tmp_image_height = round($tmp_image_width * $src_height / $src_width);
} else {
    $tmp_image_height = $height;
    $tmp_image_width = round($tmp_image_height * $src_width / $src_height);
}

$tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height);
imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height);

//添加白邊
$final_image = imagecreatetruecolor($width, $height);
$color = imagecolorallocate($final_image, 255, 255, 255);
imagefill($final_image, 0, 0, $color);

$x = round(($width - $tmp_image_width) / 2);
$y = round(($height - $tmp_image_height) / 2);

imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height);

//輸出圖片
header('Content-Type: image/jpeg');
imagejpeg($final_image);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 时尚| 察哈| 乌审旗| 泗洪县| 安康市| 榕江县| 吴川市| 太谷县| 沙河市| 阳城县| 隆回县| 霸州市| 台北县| 兴业县| 清水县| 郎溪县| 垫江县| 成安县| 阳城县| 克东县| 三门县| 安仁县| 乌兰浩特市| 长宁县| 靖江市| 滕州市| 高雄县| 富源县| 揭阳市| 安图县| 高安市| 平泉县| 兰溪市| 苏尼特右旗| 襄垣县| 绍兴县| 宁武县| 临澧县| 喀什市| 连云港市| 资源县|