最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年12月25日 12:18:10   作者:  
上傳圖片直接縮放的話就會導致圖片變形,這樣體驗肯定就不好了。下面提供一種解決方法,縮小后添加白邊的方法看下面的代碼實現(xiàn)

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

源圖,尺寸是600×366:

最終生成的效果圖:

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

先將源圖按比例生成縮略圖,并且寬不大于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);

相關(guān)文章

  • thinkPHP+ajax實現(xiàn)統(tǒng)計頁面pv瀏覽量的方法

    thinkPHP+ajax實現(xiàn)統(tǒng)計頁面pv瀏覽量的方法

    這篇文章主要介紹了thinkPHP+ajax實現(xiàn)統(tǒng)計頁面pv瀏覽量的方法,涉及thinkPHP模板調(diào)用及數(shù)據(jù)庫讀寫相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 基于Laravel 多個中間件的執(zhí)行順序詳解

    基于Laravel 多個中間件的執(zhí)行順序詳解

    今天小編就為大家分享一篇基于Laravel 多個中間件的執(zhí)行順序詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • php定義數(shù)組和使用示例(php數(shù)組的定義方法)

    php定義數(shù)組和使用示例(php數(shù)組的定義方法)

    這篇文章主要介紹了php定義數(shù)組和使用示例(php數(shù)組的定義方法),需要的朋友可以參考下
    2014-03-03
  • laravel框架中視圖的基本使用方法分析

    laravel框架中視圖的基本使用方法分析

    這篇文章主要介紹了laravel框架中視圖的基本使用方法,結(jié)合實例形式分析了laravel框架中視圖的原理、調(diào)用及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-11-11
  • CI(CodeIgniter)框架配置

    CI(CodeIgniter)框架配置

    今天研究了下CI框架的說明文檔,打算在下次項目中用用看。先把今天看完的內(nèi)容整理整理,基本配置非常簡單,好像在配置方面 在沒有比ci框架簡便的了。。
    2014-06-06
  • Laravel自定義 封裝便捷返回Json數(shù)據(jù)格式的引用方法

    Laravel自定義 封裝便捷返回Json數(shù)據(jù)格式的引用方法

    今天小編就為大家分享一篇Laravel自定義 封裝便捷返回Json數(shù)據(jù)格式的引用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • laravel5創(chuàng)建service provider和facade的方法詳解

    laravel5創(chuàng)建service provider和facade的方法詳解

    這篇文章主要介紹了laravel5創(chuàng)建service provider和facade的方法,實例分析了laravel創(chuàng)建service、provider和facade類的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下
    2016-07-07
  • PHP產(chǎn)生不重復隨機數(shù)的5個方法總結(jié)

    PHP產(chǎn)生不重復隨機數(shù)的5個方法總結(jié)

    這篇文章主要介紹了PHP產(chǎn)生不重復隨機數(shù)的5個方法總結(jié),PHP隨機數(shù)經(jīng)常在項目中使用,本文總結(jié)了網(wǎng)絡(luò)上的和自己項目中用到的隨機數(shù)生成方法,需要的朋友可以參考下
    2014-11-11
  • php cc攻擊代碼與防范方法

    php cc攻擊代碼與防范方法

    今天把客戶查找后門的時候發(fā)現(xiàn)的代碼,特分享下,看到這樣的代碼就是黑客用來攻擊別人訪問,不斷訪問指定網(wǎng)站,導致網(wǎng)站無法訪問,我們的網(wǎng)站就是幫兇了,同時我們自己的網(wǎng)站或服務(wù)器也會無法訪問,所以一定要注意防范。
    2012-10-10
  • Laravel如何同時連接多個數(shù)據(jù)庫詳解

    Laravel如何同時連接多個數(shù)據(jù)庫詳解

    這篇文章主要給大家介紹了關(guān)于Laravel如何同時連接多個數(shù)據(jù)庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Laravel具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08

最新評論

太保市| 惠东县| 邓州市| 略阳县| 丽水市| 泰兴市| 会理县| 博爱县| 阳西县| 五大连池市| 拉萨市| 龙井市| 毕节市| 马山县| 山丹县| 环江| 青龙| 彭水| 策勒县| 潜江市| 醴陵市| 上蔡县| 昌都县| 台中县| 彭水| 柳州市| 阿拉善左旗| 张家港市| 敖汉旗| 都江堰市| 巴东县| 昭苏县| 德格县| 平和县| 靖宇县| 托克托县| 荆州市| 吉木萨尔县| 林芝县| 蕉岭县| 馆陶县|