允许用户上传其个人资料的图片

时间:2010-12-05 19:01:28

标签: php image-processing image-manipulation

奇怪的是,我找不到关于此主题的任何信息:用户个人资料图片。

以下是否有PHP解决方案?

  • 允许用户从硬盘上传照片以存储在我们的服务器上
  • 如果图像太大,会缩小图像;如果它太小(高度/宽度),则展开它

这很容易建立自己吗?或者已经有一个图书馆吗?

3 个答案:

答案 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)

也许这个基本的tut可以帮助你:

Building your own Tutorial CMS

使用php操作图像,非常容易:

PHP: GD 1 祝你好运

答案 2 :(得分:1)

很难回答这个问题,因为“简单”是一个非常相对的术语。对于体验php编码器来说这很容易,对于初学者来说它并不那么容易。是的,有图像调整大小的库。您可能必须自己处理上传处理,这非常简单 要调整大小,您可以查看pear library here