2011-05-02 179 views
1

我想弄清楚imgur.com是如何构建他们的画廊(在右边的主页上的)。PHP图像处理

我的问题是,我想从图像中创建缩略图库,但我希望宽高比正确,使图像看起来不奇怪。

因此,我不能只是采取上传的图像,并将比例不同的高度和宽度更改为100px/100px。

他们裁剪图像,然后创建一个缩略图?他们如何裁剪?他们如何设定作物比例?

感谢,

回答

4

计算缩略图大小...

$sizes = getimagesize('img.jpg'); 

$w = $sizes[0]; 
$h = $sizes[1]; 

$new_w = 200; // some value 
$new_h = $h * ($new_w/$w); 

http://www.php.net/manual/en/function.getimagesize.php

另外,如果您想裁剪图像,使用一些PHP库。我建议WigeImage。它的docs写得很好,它提供了简单的裁剪,调整大小,镜像,旋转等。:)

请注意,WideImage和PHP文档中记录的其他图像功能需要GD扩展安装在您的服务器上。

+0

也许你应该提到这是一个php gd函数! – markus 2011-05-02 12:56:44

+0

它不需要gd库,至少docs状态是... – usoban 2011-05-02 13:03:23

+0

真的,不知道,我的坏。 – markus 2011-05-02 13:04:37

3

在本地计算机上安装imagick和玩它,它可以做所有你问的。对于X或Y是如何做这件事并没有什么帮助,因为每种技术都有不同的表现,在PHP(你选择的标签)中,你可以用imagick做到这一点。

0

这可以很容易地使用内置的方法在ImageArtist这是一个纯粹的OO包装。

在Imagick上使用GD的优势在于GD扩展受到各种主机提供商的支持,因此您的代码在本地大部分时间都可以正常工作,并且在托管之后可以正常工作。

这里是一个示例代码。

$img = new Image("./cover.jpg"); 

$img->scaleToWidth(100); // make the width 100px and make sure to resize height accroding to the ratio 
$img->scaleToHeight(100); // make the hegith 100px and make sure to resize width accroding to the ratio 

/* if you want to crop the image */ 
$img->crop(5,5,90,90); // this will crop a rectangle keeping 5px border 

/* finally save it */ 
$img2->save("./final.png",IMAGETYPE_PNG);