2011-05-18 90 views
2

我想要图像需要调整大小的新高度和宽度。有两个条件基于长宽比调整图像大小php

  1. 宽度必须围绕180像素(170-180),但< 180像素(上载的图像总是> 180)
  2. 高度应为最大180像素(上载的图像可以是或可以不是> 180 )
+0

好吧,你已经尝试过一些东西吗?你卡在哪里? – deceze 2011-05-18 05:26:43

+0

你试过imagecopyresize php吗?我使用该功能,也是imagecopyreassemble。 – 2011-05-18 05:30:28

+0

我只需要新的高度和宽度我知道很多功能都可以实现它,但我留意到了高度和宽度,我必须通过它 – aWebDeveloper 2011-05-18 05:38:02

回答

0

如果您正在为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; 
} 
+0

我的条件并不完全是纵横比,而且php内置了图像magik函数 – aWebDeveloper 2011-05-18 05:40:03

+0

@ Web开发人员:感谢关于内置图像magick函数的提示,以及您的问题是什么?从这个问题看来,你想调整一个图像没有别的。或者你只是想要新的大小而不调整大小? – 2011-05-20 06:07:15

+0

是的,我只是想调整大小,这里是你的代码的PHP版本http://www.php.net/manual/en/function.imagick-thumbnailimage.php – aWebDeveloper 2011-05-22 16:20:29

0

你只需要几个步骤:

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 
}