Laravel 4.1,如何比较函数中的图像高度和宽度

时间:2014-01-17 02:01:06

标签: php image laravel laravel-4 compare

我正在尝试确定图片必须以哪种方式裁剪以完全适合作为方形用户个人资料图片。

我发现了Laravel软件包“干预图像”,但据我所知,这个版本没有提供比较图像是水平还是垂直的功能。

http://intervention.olivervogel.net/

在调整大小和裁剪图像之前,有没有什么好方法可以确定图像是方形还是水平还是垂直?

这就是我现在所做的事情:

$img->resize(400, null, true)->crop(400, 400);

它对于正方形非常适用于垂直方向,但它对于垂直方向非常有用,但对水平图像效果不佳。

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用getimagesize($link),它返回一个包含图像宽度和高度的数组。然后使用以下方法检查水平或垂直或方形:

<?php
function WvsH ($link) {
    $size = getimagesize($link);
    if ($size[0] < $size[1]) {
        return 'vertical';
    }
    else if ($size[1] < $size[0]) {
        return 'horizontal';
    }
    else {
        return 'square';
    }
}
?>

当然,这是假设链接存在。

答案 1 :(得分:1)

所以,这是我的看法。

http://jsfiddle.net/SinisterSystems/PD4a2/1/

<强> HTML:

<img id="img1" src="http://hdwallpaper2013.com/wp-content/uploads/2013/02/Download-Flower-Background-Images-HD-Wallpaper.jpg" />

<img id="img2" src="http://1.bp.blogspot.com/_74so2YIdYpM/TEd09Hqrm6I/AAAAAAAAApY/rwGCm5_Tawg/s1600/tall%2Bcopy.jpg" />

<img id="img3" src="http://upload.wikimedia.org/wikipedia/commons/8/89/Love_Heart_symbol_square.svg" />

<强> CSS:

img {
    max-width:500px;
    max-height:500px;
    border:1px solid #000;
}

<强>使用Javascript:

function findSize(x){
    var h = x.height();
    var w = x.width();
    if(h<w){
       alert("Image is wider than it is tall.");
    } else if(w<h){
       alert("Image is taller than it is tall.");
    } else {
       alert("Image is square.");
    }
}
findSize($('#img1'));
findSize($('#img2'));
findSize($('#img3'));

为您提供明确的比较,了解哪些值更高,更宽或更正方形。

除非您为每个条件发布的上一个问题中提供的add css代码,否则您只需要提供horizontal代码。我设置了vertical类,square类和{{1}}类。 Like this Fiddle. You will have to define the classes in CSS

显然我只设置了边框颜色,但此时你可以做任何你想做的事。