我想要图像需要调整大小的新高度和宽度。有两个条件基于长宽比调整图像大小php
- 宽度必须围绕180像素(170-180),但< 180像素(上载的图像总是> 180)
- 高度应为最大180像素(上载的图像可以是或可以不是> 180 )
我想要图像需要调整大小的新高度和宽度。有两个条件基于长宽比调整图像大小php
如果您正在为Linux编写程序,我会推荐使用ImageMagick。它比任何基于PHP的方法更有效率,并且可能更快。几乎所有的服务器都安装了它。下面的代码将做的伎俩。
function resizeTo($source, $dest, $w=180, $h=180) {
system("convert $source -resize {$w}x{$h} $dest");
}
它会介意宽高比。
编辑:
很抱歉的混乱。我认为以下应该做你正在寻找的东西。它没有经过测试,可能需要一点点调试,如果遇到麻烦我可以尝试再次发布。
//accepts and returns point object (having ->x and ->y)
function resizeTo($current, $max) {
if($current->x <= $max->x && $current->y <= $max->y) //you will not need this but
return $current; // still its good to have
if(($current->y/$max->y) > ($current->x/$max->x)) { //y axis needs more trimming
$r=$current->y/$max->y;
$current->y = $max->y;
$current->x = $current->x/$r;
} else {
$r=$current->x/$max->x;
$current->x = $max->x;
$current->y = $current->y/$r;
}
return $current;
}
我的条件并不完全是纵横比,而且php内置了图像magik函数 – aWebDeveloper 2011-05-18 05:40:03
@ Web开发人员:感谢关于内置图像magick函数的提示,以及您的问题是什么?从这个问题看来,你想调整一个图像没有别的。或者你只是想要新的大小而不调整大小? – 2011-05-20 06:07:15
是的,我只是想调整大小,这里是你的代码的PHP版本http://www.php.net/manual/en/function.imagick-thumbnailimage.php – aWebDeveloper 2011-05-22 16:20:29
你只需要几个步骤:
1. scale = imageWidth/180;
2. scale = (imageHeight/scale>180) ? imageHeight/180 : scale;
第一个将设置您需要的宽度180的比例因子(根据您的评论,它始终是较大的那么180)
第二个将检查高度是否会大于180的那个比例。如果是,那么比例尺就是高度/ 180。如果不是,你已经有了最大高度。
那么你还需要步骤获得的实际宽度和高度:
width = imageWidth/scale;
height = imageHeight/scale;
考虑到你想使imageWidth 170和180我猜裁剪图像之间也是一种可能性。如果是这种情况,你需要一个额外的支票
if (width<170) {
width = 170;
height = imageHeigh/(imageWidth/170);
//resize image to width and height
//crop image to height = 180
}
好吧,你已经尝试过一些东西吗?你卡在哪里? – deceze 2011-05-18 05:26:43
你试过imagecopyresize php吗?我使用该功能,也是imagecopyreassemble。 – 2011-05-18 05:30:28
我只需要新的高度和宽度我知道很多功能都可以实现它,但我留意到了高度和宽度,我必须通过它 – aWebDeveloper 2011-05-18 05:38:02