我的网站上有一项功能,用户可以为其特定的“频道”上传背景图片。我遇到的问题是有些用户以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 :(得分:1)
您可以实现一种动态调整图像大小的方法,使其符合您希望从前端获得的大小;但是,这并不会阻止他们使用你的带宽并使网站变慢。
最好的解决方案是设置尺寸,尺寸和尺寸都足够好,然后再使用它。如果需要,可以裁剪它。
答案 1 :(得分:1)
我认为最好的方法是从php.ini限制上传文件大小,然后调整服务器图像大小以最终以最佳分辨率存储它。
这是一个很好的代码,用于在PHP中调整图像大小 http://www.white-hat-web-design.co.uk/blog/resizing-images-with-php/