使用imagejpeg()函数保存图像文件


Using imagejpeg() function to save image file

我试图将图片上传到两个不同的目录中,我想使用imagejpeg()函数将图片放在其中一个目录中。这两个目录分别称为uploadsresized

下面是我完成这个的代码:

$tmp_name = $_FILES["fileToUpload"]["tmp_name"];
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    imagejpeg($tmp_name,"resized/newimage.jpg");
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} 

然而,我一直得到错误imagejpeg() expects parameter 1 to be resource, string given in /home/sites/aejhyun.com/public_html/Syrian Project/upload.php on line 41。我也做了一些研究,在这里http://php.net/manual/en/function.imagejpeg.php和http://php.net/manual/en/function.move-uploaded-file.php。然而,我无法解决这个问题。有人能帮忙吗?

你正在设置字符串$tmp_name,而不是图像资源本身,该函数需要实际的图像,而不是位置或名称,如果你想调整它的大小,首先你必须打开它作为图像,然后做任何你想做的,最后保存,

所以,这是字符串

$tmp_name = $_FILES["fileToUpload"]["tmp_name"];

移动到$target_file后,你可以打开它作为图像

$image = imagecreatefromjpeg($target_file);

现在你有了图像本身而不仅仅是一个文件名你可以用imagejpeg

保存它
imagejpeg($image,"resized/newimage.jpg");

这对我有用

$url = 'my_img_url.jpeg';
$binary = imagecreatefromstring(file_get_contents($url));
imageJpeg($binary, "myimage.jpg", 100);