2011-10-25 58 views
0

我的網站上有一項功能,用戶可以在其上爲其特定「頻道」上傳背景圖像。我遇到的問題是有些用戶上傳圖片的分辨率爲3000 + px x 2000 + px,而其他圖片上傳的圖片爲1280 x 720,依此類推。爲用戶上傳設置標準背景圖像分辨率

這種情況的最佳途徑是什麼?我應該不斷讓他們上傳這樣的巨大決議嗎?或者限制上傳到一定的像素量?我會如何去做這件事?

這裏是用戶可以在其中上傳背景圖片:

<? 
$images = glob(base_root().'uploads/channels/'. $Channels->id .'/background/{*.jpg,*.Jpg,*.JPG,*.jpeg,*.Jpeg,*.JPEG,*.gif,*.Gif,*.GIF,*.png,*.Png,*.PNG}', GLOB_BRACE); 
if(is_array($images) AND count($images) >= 1) { 
    $imagePaths = pathinfo($images[0]); 
$channelBackgroundSrc = base_url() .'uploads/channels/'. $Channels->id .'/background/'. $imagePaths['basename'] .'?rand='. mt_rand(0, 9999); 
?> 

下面是在每用戶的「信道」,其中它得到的背景圖像用於該特定信道的頂部的代碼。

$(document).ready(function() { 
    <? 
    $images = glob(base_root().'uploads/channels/'. $channel['id'] .'/background/{*.jpg,*.Jpg,*.JPG,*.jpeg,*.Jpeg,*.JPEG,*.gif,*.Gif,*.GIF,*.png,*.Png,*.PNG}', GLOB_BRACE); 
    if(is_array($images) AND count($images) >= 1) { 
     $imagePaths = pathinfo($images[0]); 
     $channelBackgroundSrc = base_url() .'uploads/channels/'. $channel['id'] .'/background/'. $imagePaths['basename'] .'?rand='. mt_rand(0, 9999); 
    ?> 
     document.getElementById('userBackground'); 
     $("#userBackground").css("background", "url('<?=$channelBackgroundSrc?>') repeat-x scroll 0px 0px transparent"); 
     $("#userBackground").css("background-attachment", "fixed"); 
    <? 
    } 
    ?> 

}); 
+0

來調整圖像如有疑問,你不應該讓用戶上傳任何文件。 – hakre

+0

這是必不可少的 – MJ93

回答

1

我認爲最好的辦法是限制從php.ini上傳文件大小,然後做一個服務器映像調整大小,以最終將其存儲在最佳分辨率。

這裏是一個偉大的代碼PHP http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/

+0

我想奪取這個鏈接:P,很好用,易於使用 –

+0

我已經成功地爲背景圖像設置了800KB的限制。你會推薦什麼樣的最佳解決方案? 1280 x 800? – MJ93

+1

取決於圖像格式(PNG一般大於JPEG)。無論如何,我認爲800KB對於標準質量的JPEG是很好的 –

1

您可以實現一種動態調整圖像大小的方法,以使其適合您希望從前端獲得的大小;但是,這不會阻止他們使用您的帶寬,並使網站對每個人都變得更慢。

最好的解決方案是設置一個尺寸,它的尺寸方面和尺寸方面都足夠好,然後與之一起使用。如果需要的話裁剪。

相關問題