Laravel5.2:如何从json创建图像文件

Laravel5.2:如何从json创建图像文件,laravel,Laravel,在我的控制器中,我从表单中接收如下数据: "output":{"width":500,"height":500,"image":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQFAH/9k=..."},"actions":{"crop":{"x":97,"y":0,"height":500,"width":500},"size":null}}[ 我可以从该数据创建图像文件吗 upd 1。 解码j

在我的控制器中,我从表单中接收如下数据:

"output":{"width":500,"height":500,"image":"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQFAH/9k=..."},"actions":{"crop":{"x":97,"y":0,"height":500,"width":500},"size":null}}[
我可以从该数据创建图像文件吗

upd 1。 解码json-ok,取出图像数据-ok,解码base64-ok,但是当我尝试写入磁盘时,我得到了错误:Decoder.php第96行中的NotReadableException:无法从给定的二进制数据初始化

$file = Request::input('photo');
$imagedata=json_decode($file);
$file=$imagedata->output->image;
$image = base64_decode($file);

$png_url = "user-".time().".png";
$path = "/public/".$png_url;

Image::make($image)->save($path);
UPD2。
使用file\u put\u contents函数解决。

以下是如何从json数据保存图像:

$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
    . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
    . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
    . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$data = base64_decode($data);

$im = imagecreatefromstring($data);
if ($im !== false) {
    echo imagejpeg($im , base_path() . DIRECTORY_SEPARATOR . "sth.jpeg") ;
}
else {
    echo 'An error occurred.';
}
这是有效的:

$file = Request::input('photo');
$imagedata=json_decode($file);
$file=$imagedata->output->image;
$png_url = "user-".time().".png";
$path = "uploads/".$png_url;
$image = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $file));
file_put_contents($path, $image);

解码json,取出图像数据,解码base64,写入磁盘。谢谢Marc,我在尝试制作图像::make时出错。第一篇文章已更新。谢谢Salar,但我收到一个错误:imagecreatefromstring():数据的格式不可识别。base64已经是jpeg图像。它只需要被解码/保存。通过GD运行它并重新压缩为jpeg只会丢弃图像quality@Alex那么alex,你的图像编码有问题。获取一个示例图像,并尝试使用联机工具对其进行编码,然后将结果与客户端发送的数据进行比较,确保没有问题。@Salar感谢您的帮助,但在这种情况下,我们不需要使用imagecreatefromstring函数。使用文件内容功能解决了问题。