由于图片上传的时候没有限制比例, 结果导致页面输出效果是这样的,
要是裁切图片, 图片显示不全, 要是强制输出, 图片会失祯
于是老大就说了, 你把差不多大小的放前面嘛
这样我就得写个函数按照图片宽高比排序了
一开始我是打算用宽高差排序, 然后发现有的图片是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");
排序限制图片大小后的效果是这样的
先收藏再说, 万一用得到呢, 是吧
阅读原文