当我在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
的位置存储到数据库中,但我似乎无法从此变量访问文件位置。
答案 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\Image或Intervention\Image。
答案 1 :(得分:0)
imagecreatetruecolor
在内存中创建一个图像资源并返回其标识符。它不会创建包含图像的任何物理文件。
使用imagejpeg
之类的:
imagejpeg($resized_image, '/path/to/save/img.jpg')
它将创建图像文件并将其保存到磁盘。然后您可以将该路径存储在数据库中。
请参阅:http://php.net/manual/en/function.imagejpeg.php和http://php.net/manual/en/function.imagecreatetruecolor.php
答案 2 :(得分:0)
$ resized_image与afile无关。 您需要使用imagejpeg,imagepng,..方法将资源保存到文件中。
imagejpeg($resized_image, 'path/file.jpg');