奇怪的是,我找不到关于此主题的任何信息:用户个人资料图片。
以下是否有PHP解决方案?
这很容易建立自己吗?或者已经有一个图书馆吗?
答案 0 :(得分:3)
要上传和存储图像,我建议为图片生成随机文件名,而不是保留原始文件名。这将防止冲突,并增加一定程度的安全性。我会建议一个很长的名字;只是随机数字和字母。
然后,将随机文件名与您的用户信息一起存储在数据库记录中。这样,您就不必担心文件名和用户名不同步了,正如我之前所说,有人无法猜测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,jpgs和png。
答案 1 :(得分:1)
答案 2 :(得分:1)
很难回答这个问题,因为“简单”是一个非常相对的术语。对于体验php编码器来说这很容易,对于初学者来说它并不那么容易。是的,有图像调整大小的库。您可能必须自己处理上传处理,这非常简单 要调整大小,您可以查看pear library here