由于圖片上傳的時候沒有限制比例, 結果導致頁面輸出效果是這樣的,
yu.png
要是裁切圖片, 圖片顯示不全, 要是強制輸出, 圖片會失禎
于是老大就說了, 你把差不多大小的放前面嘛
這樣我就得寫個函數按照圖片寬高比排序了
一開始我是打算用寬高差排序, 然后發現有的圖片是200 x 300, 有的圖片是700 x 400
這樣的話用寬高差肯定會出問題的, 就只能用寬高比了
<?php
// 前提保證 php 有安裝 GD 庫擴展
// 先獲取從數據庫讀出來的單頁數據 $activity
// ...
/**
* 根據圖片寬高比排序
* @param $dopage 數據庫讀出來的單頁數據
* @param $feild 表中圖片的字段
*/
function sort_image($dopage, $feild){
$sort = array(); // 聲明排序容器數組
$i = 0; // 聲明寬高比預加變量
// 遍歷 $dopage 獲取圖片寬高比
foreach ($dopage as $d_k => $d_v) {
// 用 getimagesize() 這個 GD 函數獲取圖片寬高比, 賦值給新變量 $d_v["w_h"]
// 用 ++$i 的原因是為了讓鍵保持唯一, 不然寬高比一樣的圖片會被覆蓋掉
$d_v["w_h"] = (getimagesize($d_v[$feild])[0] / getimagesize($d_v[$feild])[1]) * 100 + ++$i;
// 這樣就得到了一個寬高比為鍵的數組 $dopage
$dopage[$d_v["w_h"]] = $d_v;
}
// 按照鍵將數組排序, 生成排序后的寬高比為鍵的新數組 $dopage
$dopage = krsort($sort);
}
// 用 sort_image() 函數將 $activity 換成成排序后的 $activity
$activity = sort_image($activity, "picurl");
排序限制圖片大小后的效果是這樣的
Paste_Image.png
先收藏再說, 萬一用得到呢, 是吧
閱讀原文