低档次/调整?

时间:2009-08-04 11:34:46

标签: php upload resize

如果超过350x100,我如何将使用我的上传脚本上传的图像调整大小/缩小到350x100?

我的剧本:

$allowed_filetypes = array('.png','.PNG');
$filename = $_FILES['strUpload']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(in_array($ext,$allowed_filetypes)) 
{
    list($width, $height, $type, $attr) = getimagesize($_FILES['strUpload']['tmp_name']);
    if ($width > 350 || $height > 100) 
    {
        echo "That file dimensions are not allowed. Only 350x100 is allowed";
        exit();
    } 

    if ($_FILES['strUpload']['size'] > 2097152 )
    {
        echo "ERROR: Large File Size. Only less than 2mb accepted";
        exit();
    }

    $imagename = uniqid('ff') . ".png";
    move_uploaded_file ( $_FILES['strUpload']['tmp_name'], $imagename );

    print ( "<script type=\"text/javascript\">" );
    if(file_exists($imagename) && $_FILES['strUpload']['name'] != '')
    {
        print ( "self.opener.SetImageFile(\"" . $imagename . "\");" );
        echo "\n";
        print ( "self.opener.setInputFile(\"" . $imagename . "\");" );
    }
    echo "\n";
    print ( "window.close();" );
    echo "\n";
    print ( "</script>" );

    $open = new dbconnect();
    $open->callDB("localhost","pema2201_william","lindberg","pema2201_siggen");

    $ip = $_SERVER['REMOTE_ADDR'];
    $dattum = date('Y-m-d H:i:s', time());

    mysql_query("INSERT INTO piclist (ip,pic,datum) VALUES('$ip','$imagename','$dattum')") or die(mysql_error());

} 
else 
{
    echo "WRONG FILE TYPE ONLY PNG ALLOWED"
}

4 个答案:

答案 0 :(得分:1)

PHP有几个图像处理库。 GD library自PHP 4.3起已发货,所以我建议使用它。只需阅读文档即可找到您需要的内容。

答案 1 :(得分:0)

使用imagecopyresized - 这是一个很好的例子,说明如何在PHP手册页上使用它。

答案 2 :(得分:0)

看看几天前别人问的this问题。

这不仅解释了它是如何完成的,而且还解释了如何以有效的方式完成它。 (ImageMagick应该在GD库上使用)

希望有所帮助。

答案 3 :(得分:0)

一般要点是为图像创建所需尺寸的新“画布”。

将上传的图像复制到新画布上,设置源宽x高(拍摄所有源图像)和目标宽x高(使用所有目标画布),偏移可用于移动图像如果你需要,可以稍微改善一下。

然后最后将它保存到需要它的位置,或将其插入到数据库字段中(这将替换你的move_uploaded_file调用)。