为用户上传设置标准背景图像分辨率

时间:2011-10-25 21:18:52

标签: php javascript

我的网站上有一项功能,用户可以为其特定的“频道”上传背景图片。我遇到的问题是有些用户以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");
    <?
    }
    ?>

});

2 个答案:

答案 0 :(得分:1)

您可以实现一种动态调整图像大小的方法,使其符合您希望从前端获得的大小;但是,这并不会阻止他们使用你的带宽并使网站变慢。

最好的解决方案是设置尺寸,尺寸和尺寸都足够好,然后再使用它。如果需要,可以裁剪它。

答案 1 :(得分:1)

我认为最好的方法是从php.ini限制上传文件大小,然后调整服务器图像大小以最终以最佳分辨率存储它。

这是一个很好的代码,用于在PHP中调整图像大小 http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/