2016-05-31 134 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 –

相關問題