调整大小的base64图片
我有多个图片 - 保存为Base64编码字符串,现在我想调整这些图片,让他们的缩略图...调整大小的base64图片
最好将使用Javascript(节点服务器)来调整它们的大小,但也可以用php调整它们的大小。
由于在node.js中提前
我同意the method from Jon Hanna:你解析的Base64code然后将其加载到重采样前的GD图像。然而,要将它作为数据取回,它并不像我那么容易。在GAE的php中,需要通过在php.ini文件中设置output_buffering = "On"
来获得enable output buffering。
下面我详细解释了一步。
此文档被取为参考使用Base64code的解析,以创建图像资源:http://php.net/manual/en/function.imagecreatefromstring.php
// Create image resource from Base64code
$data64 = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
$image = imagecreatefromstring(base64_decode($data64));
这是可以直接付诸重新取样功能的图像资源:http://php.net/manual/en/function.imagecopyresampled.php
// 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。
见 how to create a base64encoded string from image resource
// Buffering
ob_start();
imagepng($image_p);
$data = ob_get_contents();
ob_end_clean();
使用文档下面我设置my project一个GCS桶的网站,所以我可以商店&显示它直接: https://cloud.google.com/storage/docs/website-configuration#tips
//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");
值得指出的是'imagecopyresampled()'比'imagecopyresized()'产生更好的质量,因为它插值了。 – garrettlynch
好吧,我没有直写在我的服务器上的权利 - 我怎么能连接这个拇指到我的node.js应用程序?任何想法? –
这是属于“不知道如何在node.js中做到这一点(或者说,任何事情)”的问题。希望其他人可能有一个好主意。 –
寻找这个答案一2天,现在... 通常它会很好地工作节点 - 但在我节点应用程序我有没有写权限,太......,吸 –