用php将上传的图像转换成小图像

用php将上传的图像转换成小图像,php,image,Php,Image,你好,我有一个关于php的问题。在我的php文件中,我有一部分用于图像上传。 它还翻译并上传我上传的同样小尺寸的图像。但是,当使用.jpg扩展名时,这种缩减不适用于.png扩展名 $uploaddir = "storage/products/screenshot/"; //Screenshot upload directory $valid_formats = array("jpg","jpeg","png"); // Valid image formats $countScreen = 0

你好,我有一个关于php的问题。在我的php文件中,我有一部分用于图像上传。 它还翻译并上传我上传的同样小尺寸的图像。但是,当使用.jpg扩展名时,这种缩减不适用于.png扩展名

$uploaddir = "storage/products/screenshot/"; //Screenshot upload directory

$valid_formats = array("jpg","jpeg","png"); // Valid image formats

$countScreen = 0;
foreach ($_FILES['item_screen']['name'] as $name => $value) {
    $filename = stripslashes($_FILES['item_screen']['name'][$name]);

    $size = filesize($_FILES['item_screen']['tmp_name'][$name]);
    //Convert extension into a lower case format
    $ext = getExtension($filename);
    $ext = strtolower($ext);
    //File extension check
    if (in_array($ext, $valid_formats)) {

        if($ext=="jpg" || $ext=="jpeg" )
        {
            $uploadedfile = $_FILES['item_screen']['tmp_name'][$name];
            $src = @imagecreatefromjpeg($uploadedfile);
        }
        else if($ext=="png")
        {
            $uploadedfile = $_FILES['item_screen']['tmp_name'];
            $src = @imagecreatefrompng($uploadedfile);
        }
        else
        {
            $src = @imagecreatefromgif($uploadedfile);
        }


        list($width,$height)=getimagesize($uploadedfile);

        $newwidth=800;
        $newheight=($height/$width)*$newwidth;
        $tmp=imagecreatetruecolor($newwidth,$newheight);

        $newwidth1=222;
        $newheight1=($height/$width)*$newwidth1;
        $tmp1=imagecreatetruecolor($newwidth1,$newheight1);

        @imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
        @imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);

        $random1 = rand(9999, 100000);
        $random2 = rand(9999, 200000);
        $image_name =  $first_title . '_' . $random1 . $random2 . '.' . $ext;
        $image_name1 = 'small_' .$first_title . '_' . $random1 . $random2 . '.' . $ext;

        //$newname = $uploaddir . $image_name;

        $filename = $uploaddir . $image_name;
        $filename1 = $uploaddir . $image_name1;
        $pic_name = $image_name1;

        @imagejpeg($tmp,$filename,100);
        @imagejpeg($tmp1,$filename1,100);

        @imagedestroy($src);
        @imagedestroy($tmp);
        @imagedestroy($tmp1);

        //Moving file to uploads folder
        if (!move_uploaded_file($_FILES['item_screen']['tmp_name'][$name], $filename)) {
            $errors[]['message'] = $lang['ERROR_UPLOAD_IMG'];
        }
        if ($countScreen == 0)
            $image_name2 = $image_name;
        elseif ($countScreen >= 1)
            $image_name2 = $image_name2 . "," . $image_name;

    } else {
        $errors[]['message'] = $lang['ONLY_JPG_ALLOW'];
    }
    $countScreen++;
}

Github要点:

我认为您需要尝试以下方法:

if($ext=="jpg" || $ext=="jpeg" || $ext=="png" )
{
    $uploadedfile = $_FILES['item_screen']['tmp_name'][$name];
    $src = @imagecreatefromjpeg($uploadedfile);
}
else
{
    $src = @imagecreatefromgif($uploadedfile);
}

1你的问题2是什么。请阅读:可能您在
imagecreatefrompng
案例中遗漏了
[$name]
。这是工作,谢谢。我以前尝试过这个方法,只是删除了这个:否则如果($ext==“png”){$uploadedfile=$\u FILES['item\u screen']['tmp\u name'];$src=@imagecreatefrompng($uploadedfile);}欢迎,如果你感觉很好,请投票给我,并关注我的网站: