图片按照宽高比排序

由于图片上传的时候没有限制比例, 结果导致页面输出效果是这样的,


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

先收藏再说, 万一用得到呢, 是吧
阅读原文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,262评论 4 61
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,827评论 1 92
  • 春节看了松本清张的sp《强蚁》,一贯的恶女,一贯的御用——米仓凉子。 米仓凉子可以说是恶女系代言人了。除了《强蚁》...
    封铌阅读 873评论 6 5
  • 转自http://www.ruanyifeng.com/blog/2012/07/three_ways_to_de...
    lambdang阅读 720评论 0 1