2016-05-31 159 views
9

Firebase存储看起来非常酷且易于使用,但是我想知道在将图片上传到Firebase存储之前是否有方法调整图片的大小,例如,在ImageMagick中运行过程服务器,然后使用Firebase SDK运行上传过程,但我注意到没有Firebase SDK服务器的存储功能。在将图片上传到Firebase之前调整图片大小

+1

至于上传“在上传到Firebase之前”有[用于处理图像的几个节点库](http://stackoverflow.com/questions/24026320/node-js-image-resizing-without-imagemagick),是? – Kato

+0

是的,有很多方法可以用任何语言来做到这一点。 –

回答

14

您还可以使用Firebase存储+ Google Cloud Functions上传图像,调整图像大小(使用ImageMagick或类似),并将其写回Firebase存储。

我有一个例子一起使用这些here(虽然我触发Cloud Vision API,而不是一个图像调整器)。

快速提示:Firebase存储没有Node.js客户端,而是我们推荐使用GCloud-Node库。

+0

我一直在想,但我不确定,使用gcloud-golang而不是节点来做这件事真棒。 –

+0

您可以随时设置对象更改通知(https://cloud.google.com/storage/docs/object-change-notification)+ Go Google App Engine应用程序(https://cloud.google.com/appengine/ docs/go /)来做这个:) –

+0

好吧,知道云功能是firebase的一部分,使用nodejs更容易实现解决方案。 –

2

我们使用的JavaScript 调整,它采用客户端设备的处理能力来调整图像大小,和伟大工程,为我们节省空间和金钱,并保存在客户端在大多数移动情况下,大量的时间和金钱也。

我们使用的原始脚本来from here,程序使用它是如此简单:

<input type="file" id="select"> 
<img id="preview"> 
<script> 
document.getElementById('select').onchange = function(evt) { 
    ImageTools.resize(this.files[0], { 
     width: 320, // maximum width 
     height: 240 // maximum height 
    }, function(blob, didItResize) { 
     // didItResize will be true if it managed to resize it, otherwise false (and will return the original file as 'blob') 
     document.getElementById('preview').src = window.URL.createObjectURL(blob); 
     // you can also now upload this blob using an XHR. 
    }); 
}; 
</script> 

我相信那家伙(dcollien)值得优点很多,所以我会建议你投他的答案。

0

关于最后一条评论的几个问题。首先,如果这是客户端 - >服务器,请理解调整大小不能保证执行。如果客户决定不按上述规则玩牌,客户可以尝试上传不同尺寸的图片。永远不要相信客户。如果你想让客户端调整来自服务器的东西的大小。那么这将与风格相同,并且不会导致带宽的减少。

+0

https://stackoverflow.com/questions/37557343/resize-an-image-before-uploading-it-to-firebase/49162553#comment85330829_37558536 –