php上传图片,重命名,缩略图,并保存两者

时间:2009-08-07 23:58:21

标签: php

我一直在看move_upload_files函数,但我不认为这就是我需要的。

我需要上传图片(最大尺寸为2mb png,jpg,仅限gif),然后重命名,然后创建它的缩略图,并将两者保存到同一目录。我想首先上传/重命名主文件,然后取出并创建缩略图。但是我应该考虑做什么功能呢?

5 个答案:

答案 0 :(得分:7)

if(isset($_FILES['p1']) && $_FILES['p1']['tmp_name'] != ''){

    $sizes = array();
    $sizes['50'] = 50;
    $sizes['150'] = 150;
    $sizes['500'] = 500;

    $prefix = time();
    list(,,$type) = getimagesize($_FILES['p1']['tmp_name']);
    $type = image_type_to_extension($type);

    move_uploaded_file($_FILES['p1']['tmp_name'], 'uploads/'.$prefix.$type);

    $t = 'imagecreatefrom'.$type;
    $t = str_replace('.','',$t);
    $img = $t('uploads/'.$prefix.$type);

    foreach($sizes as $k=>$v){

        $width = imagesx( $img );
        $height = imagesy( $img );

        $new_width = $v;
        $new_height = floor( $height * ( $v / $width ) );

        $tmp_img = imagecreatetruecolor( $new_width, $new_height );
        imagealphablending( $tmp_img, false );
        imagesavealpha( $tmp_img, true );
        imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

        $c = 'image'.$type;
        $c = str_replace('.','',$c);
        $c( $tmp_img, 'uploads/'.$k.'_'.$prefix.$type );

    }//


}//

我用它来上传,重命名和创建3个不同的拇指,希望这可以帮助某人。

答案 1 :(得分:5)

您至少需要查看PHP's GD functions,或者更好的Imagick来创建大拇指。

这里有数以万计的教程,这里有几个:

或者您可以使用现成的解决方案,例如:

答案 2 :(得分:1)

查看phpThumb

答案 3 :(得分:1)

PHPThumb是你需要的...只需在api中搜索允许你保存图像的方法。关于上传图片..这里你有一个不错的tutorial about it

答案 4 :(得分:0)

@Ian Wilkinson php.net

  

使用 imagecopyresampled()

可以获得更好的质量