允许用户上传他们的个人资料照片
问题描述:
奇怪的是,我无法找到关于此主题的任何信息:用户个人资料照片。允许用户上传他们的个人资料照片
以下是否有PHP解决方案?
- 允许用户上传他们的硬盘驱动器PIC用于存储我们的服务器
- 在缩小,如果是过大的图像;扩大它,如果它太小(高度/宽度)
这是很容易建立自己?还是已经有一个库了?
答
上传和存储图像,我会建议产生一个随机文件名的图片,而不是保持原始文件名称。这将防止冲突并增加一些安全措施。我会建议一个很长的名字;只是随机的数字和字母。
然后,将随机文件名与您的用户信息一起存储在数据库记录中。这样,您就不必担心文件名和用户名不同步,正如我之前所说的,有人将无法猜测Joe Schmoe的个人资料图片是以JoeSchmoe.jpg的形式存储的。
当你到达图像大小调整部分时,使用下面我修改过的函数(来自PHP用户注释)。在你的情况下,"images/smallerpicture.jpeg"
可能会被"images/<some random name here>.jpeg"
取代。
实施例:
scaleImage("images/bigpicture.jpeg", 100, 100, "images/smallerpicture.jpeg");
功能:
function scaleImage($source, $max_width, $max_height, $destination) {
list($width, $height) = getimagesize($source);
if ($width > 150 || $height > 150) {
$ratioh = $max_height/$height;
$ratiow = $max_width/$width;
$ratio = min($ratioh, $ratiow);
// New dimensions
$newwidth = intval($ratio * $width);
$newheight = intval($ratio * $height);
$newImage = imagecreatetruecolor($newwidth, $newheight);
$exts = array("gif", "jpg", "jpeg", "png");
$pathInfo = pathinfo($source);
$ext = trim(strtolower($pathInfo["extension"]));
$sourceImage = null;
// Generate source image depending on file type
switch ($ext) {
case "jpg":
case "jpeg":
$sourceImage = imagecreatefromjpeg($source);
break;
case "gif":
$sourceImage = imagecreatefromgif($source);
break;
case "png":
$sourceImage = imagecreatefrompng($source);
break;
}
imagecopyresampled($newImage, $sourceImage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// Output file depending on type
switch ($ext) {
case "jpg":
case "jpeg":
imagejpeg($newImage, $destination);
break;
case "gif":
imagegif($newImage, $destination);
break;
case "png":
imagepng($newImage, $destination);
break;
}
}
}
它支持的GIF,JPG文件,和PNG格式。
答
很难回答这个是因为“easy”是非常相对的术语。对于体验PHP编码器很容易,对于初学者来说并不那么容易。是的,有图像调整大小的库。你可能要处理自己上传的处理,它真的很容易 调整大小,你可以看看pear library here
您还应该验证上传的图片是否有效可能是黑客欺骗,并禁用php或任何其他脚本执行在您存储图像的目录中 – 2015-03-26 18:00:54