从php image resoure获取图像文件

时间:2017-10-06 13:21:16

标签: php image gd

当我在php上使用imagecopyresized()函数时,它返回为图像资源,我想要的是从这个图像资源获取图像数据。可能就像字符串中的文件位置或包含多个数据的数组你在$ _FILES []全局数组中得到的文件。谢谢

$source = $_FILES['image']['tmp_name'];
list($width,$height) = getimagesize($source);
echo BR.$height."   ".$width;
$desired_height = 28;
$scale = $width/$height;
$new_width = $desired_height * $scale;
$new_height = $desired_height; 
$original_image = imagecreatefromjpeg($source);
$resized_image = imagecreatetruecolor($new_width, $new_height);
if(imagecopyresized($resized_image, $original_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height)){
    echo BR."image resized".BR;
}

我想将$resized_image的位置存储到数据库中,但我似乎无法从此变量访问文件位置。

3 个答案:

答案 0 :(得分:0)

这会将你的图像内容作为jpeg放到$ buffer变量中。

ob_start();
imagejpeg($im, null, 90);
$buffer = ob_get_contents();
ob_end_clean();

然后,您可以使用file_put_contents将其保存到所需的路径,并将路径保存到数据库。

请参阅https://secure.php.net/manual/en/function.imagejpeg.php

或者,您可以使用具有更好API的第三方库,例如Nette\Utils\ImageIntervention\Image

答案 1 :(得分:0)

imagecreatetruecolor在内存中创建一个图像资源并返回其标识符。它不会创建包含图像的任何物理文件。

使用imagejpeg之类的:

imagejpeg($resized_image, '/path/to/save/img.jpg')

它将创建图像文件并将其保存到磁盘。然后您可以将该路径存储在数据库中。

请参阅:http://php.net/manual/en/function.imagejpeg.phphttp://php.net/manual/en/function.imagecreatetruecolor.php

答案 2 :(得分:0)

$ resized_image与afile无关。 您需要使用imagejpeg,imagepng,..方法将资源保存到文件中。

imagejpeg($resized_image, 'path/file.jpg');