国产探花免费观看_亚洲丰满少妇自慰呻吟_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);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五莲县| 佛冈县| 桓仁| 常德市| 通州区| 澳门| 西贡区| 陆河县| 余庆县| 芮城县| 科技| 山西省| 重庆市| 藁城市| 建德市| 韶关市| 池州市| 金门县| 五原县| 延川县| 济源市| 南投县| 林口县| 长顺县| 屏边| 名山县| 阿拉善右旗| 宁津县| 南阳市| 安图县| 汨罗市| 渭源县| 衢州市| 湛江市| 新乡市| 沿河| 孟州市| 乐都县| 台中市| 宣城市| 泽州县|