Php 调整base64图像的大小
我有多个图像-另存为Base64字符串,现在我想调整这些图像的大小以获得它们的缩略图 最好是使用Javascript(节点服务器)调整它们的大小,但也可以使用php调整它们的大小 提前感谢我不知道如何在node.js中做到这一点(或者什么都不知道),但是您的问题中的PHP部分当然是可能的。在解析Base64之后,将其加载到 您的最佳选择是在PHP中使用 另一种方法是调用ImageMagick,但您可以选择:Php 调整base64图像的大小,php,image,node.js,resize,base64,Php,Image,Node.js,Resize,Base64,我有多个图像-另存为Base64字符串,现在我想调整这些图像的大小以获得它们的缩略图 最好是使用Javascript(节点服务器)调整它们的大小,但也可以使用php调整它们的大小 提前感谢我不知道如何在node.js中做到这一点(或者什么都不知道),但是您的问题中的PHP部分当然是可能的。在解析Base64之后,将其加载到 您的最佳选择是在PHP中使用 另一种方法是调用ImageMagick,但您可以选择: 我同意:解析base64代码,然后在重新采样之前将其加载到GD图像。然而,要把它作
output\u buffering=“On”
在这里,我将详细解释该步骤
本文档作为参考,使用Base64代码的解析创建图像资源:
这是一个图像资源,可以直接放入重采样功能:
结果也是一个图像资源。要将其作为数据获取,我们需要缓冲看见 使用下面的文档,我将GCS bucket设置为一个网站,这样我就可以直接存储和显示它:
也许你可以用一个lib来处理这个问题。试试WideImage。我用过它,而且工作得很好 例如:
$image = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $req->image));
$thumbnail = WideImage::load($image)
->resize(300, 300, 'inside')
->crop('center', 'center', 300, 300);
库文档:我在服务器上没有写权限-如何将这个拇指链接到node.js应用程序?有什么想法吗?恐怕这属于我上面提到的“不知道如何在node.js中做到这一点”。希望其他人会有个好主意。现在就找两天的答案。。。正常情况下,它可以与node一起工作-但在我的node应用程序中,我也没有写权限。。。那真倒霉。我只能回答我所知道的一点。你将来打算怎么做永久存储?作为临时解决方案,您可以做的一件事是使用一个应用程序级全局图像哈希表元素,将图像存储为缓存…知道如何在使用php调整大小后在my node.js应用程序中访问它们吗?值得指出的是,
imagecopyresampled()
产生的质量比imagecopyresized()好得多
因为它是插值的。
// Resample
$image_p = imagecreatetruecolor($new_w, $new_h);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_w, $new_h, $org_w, $org_h);
// Buffering
ob_start();
imagepng($image_p);
$data = ob_get_contents();
ob_end_clean();
//Store & Display
$context = stream_context_create([
'gs' =>[
'acl'=> 'public-read',
'Content-Type' => 'image/jpeg',
'enable_cache' => true,
'enable_optimistic_cache' => true,
'read_cache_expiry_seconds' => 300,
]
]);
file_put_contents("gs://mybucket/resample/image.jpeg", $data, false, $context);
header("Location: http://mybucket/resample/image.jpeg");
$image = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $req->image));
$thumbnail = WideImage::load($image)
->resize(300, 300, 'inside')
->crop('center', 'center', 300, 300);