Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 调整base64图像的大小_Php_Image_Node.js_Resize_Base64 - Fatal编程技术网

Php 调整base64图像的大小

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图像。然而,要把它作

我有多个图像-另存为Base64字符串,现在我想调整这些图像的大小以获得它们的缩略图

最好是使用Javascript(节点服务器)调整它们的大小,但也可以使用php调整它们的大小

提前感谢

我不知道如何在node.js中做到这一点(或者什么都不知道),但是您的问题中的PHP部分当然是可能的。在解析Base64之后,将其加载到

您的最佳选择是在PHP中使用

另一种方法是调用ImageMagick,但您可以选择:

我同意:解析base64代码,然后在重新采样之前将其加载到GD图像。然而,要把它作为数据拿回来并不像我想象的那么容易。在GAE中的php上,需要在php.ini文件中设置
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);