2011-05-02 210 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);