2016-12-09 77 views
0

我無法將使用javascript捕獲的圖像轉換爲圖像文件。轉換數據:圖像/ webp; base64到圖像

我正在使用python服務器(python 3 +)。

以下是我的陣營JS代碼捕獲圖像

var React = require ('react') 
var Webcam = require('react-webcam') 
var Test = React.createClass({ 
getInitialState:function(){ 
    return {}; 
}, 
capture:function(){ 
    var screenshot = this.refs.webcam.getScreenshot(); 
    this.setState({screenshot:screenshot}); 
    console.log("screenshot location is ",screenshot) 

}, 
send_to_server:function(){ 
    RPC.execute("gold.setting","upload_webcam_blob",[this.state.screenshot],{},function(err,data) { 
     if (err){ 
      alert(err); 
      return 
     } 
    }.bind(this)); 
}, 
render:function(){ 
    console.log("apple",this.state) 
    return <div> 
     <Webcam ref='webcam'/> 
     <button onClick={this.capture} >Capture</button> 
     { this.state.screenshot ? <img src={this.state.screenshot} /> : null } 
     <button onClick={this.send_to_server} >Send To Server</button> 
    </div>; 
}, 
}); 

module.exports= Test; 

截圖的價值是一樣的東西的folliwing data:image/webp;base64,UklGRuYmAABXRUJQVlA4INomAABwPgGdASqAAuA...... 我相信這是一個base64編碼。

我發送代碼到python服務器,所以我可以轉換爲圖像並保存。

這裏是我的Python代碼

def upload_webcam_blob(self,blob,context={}): 
    fh = open("imageToSave.png", "wb") 
    fh.write(blob.decode('base64')) 
    fh.close() 

updae:上面的代碼不會創建一個文件,但是是空的。 (這段代碼是壞X)

任何人都可以建議我錯過了什麼?或任何正確的方式來轉換圖像並將其從上述格式存儲。

回答

1

一個更好的想法是使用選項screenshotFormat指定截圖格式,採用反應 - 網絡攝像頭(將其設置爲image/png)時,用這個Python代碼將數據保存到一個PNG文件:

from base64 import b64decode 

def upload_webcam_blob(self, blob, context={}): 
    with open('imageToSave.png', 'wb') as fh: 
     # Get only revelant data, deleting "data:image/png;base64," 
     data = blob.split(',')[1] 
     fh.write(b64decode(data)) 
+0

我目前得到錯誤,「AttributeError:'str'對象沒有屬性'decode'」。變量blob是字符串,除了解碼之外,你分割的方式正在工作。任何建議? –

+0

或許解碼不是必需的? –

+0

您可以使用'print(repr(blob))'來複制/粘貼'blob'的內容嗎? –