【发布时间】:2016-09-14 10:19:40
【问题描述】:
我使用 data-uri data:image/jpeg;base64,BASE64_HERE 来传递图像。我可以通过这个值imagecreatefromjpeg() 保存为图像文件吗?
这个函数是如何工作的?
【问题讨论】:
-
将分享你可能已经尝试过的相关代码sn-ps。
标签: php image-processing gd
我使用 data-uri data:image/jpeg;base64,BASE64_HERE 来传递图像。我可以通过这个值imagecreatefromjpeg() 保存为图像文件吗?
这个函数是如何工作的?
【问题讨论】:
标签: php image-processing gd
imagecreatefromjpeg() 函数从文件创建图像variable,但不向后。当您在base64 中有图像源时,您可以使用简单的file_put_contents() 函数来保存文件。例如:
$data = 'data:image/jpeg;base64,BASE64_HERE';
list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
file_put_contents('/tmp/image.jpg', $data);
如果您更喜欢,您也可以使用imagecreatefromjpeg() 然后imagejpeg() 方法。但最好的方法是使用imagecreatefromstring(),因为它会自动检测图像是否为jpg、gif、png 等。例如:
$data = 'data:image/jpeg;base64,BASE64_HERE';
$image = imagecreatefromstring(base64_decode($data));
imagejpeg($image, 'image.jpg');
【讨论】:
$data = 'data:image/png;base64,BASE64_HERE'; imagecreatefrompng($data); 然后它工作正常。这些功能的工作方式有什么区别吗?或者你能解释一下这些功能是如何工作的吗?并感谢您的快速回复
$im = imagecreatefrompng()时,您仍然需要使用imagepng($im,'image.png');等其他功能保存到文件,或者如果您想显示它header('Content-Type: image/png'); imagepng($im); imagedestroy($im); 。
imagecreatefrompng() 和imagecreatefromjpeg() 仅将图像保存在图像变量中而不将其保存到文件中。
imagepng($im, $filename) 和imagejpeg($im, $filname) 来保存文件
imagecreatefromstring() 方法更新了我的答案,我认为这最适合你的情况。如果给定的方法回答了您的问题,请不要忘记接受它:)