2012-07-04 75 views
5

我正在爲Android編寫一個phonegap應用程序,並且在某個時候,我將一個base64 PNG字符串保存爲一個文件。但是,我發現字符串只是被轉儲到一個文件中,打開時不能被視爲圖像。Phonegap - 如何從base64字符串生成圖像文件?

我希望能夠從保存的base64 string.This產生的圖像是我:

的JavaScript(格式化爲PhoneGap的):

/*** Saving The Pic ***/ 
var dataURL = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; //A simple red dot 

function gotFS(fileSystem) { 
    fileSystem.root.getFile("dot.png", {create: true, exclusive: false}, gotFileEntry, fail); 
} 

function gotFileEntry(fileEntry) { 
    fileEntry.createWriter(gotFileWriter, fail); 
} 

function gotFileWriter(writer) { 
    writer.write(dataURL); //does not open as image 
} 

function fail(error) { 
    console.log(error.code); 
} 

我試着編輯代碼以保存圖像數據,但它也沒有工作。 (見下文)

function gotFileWriter(writer) { 
    var justTheData = dataURL.replace(/^data:image\/(png|jpg);base64,/, "");//Removes everything up to ...'base64,' 
    writer.write(justTheData); //also does not show 
} 

觸發寄託都在HTML:

<p onclick="window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail)">Save a Dot</p> 

請幫助。謝謝。

+0

這可能是這個問題的答案n:[stackoferflow問題11321347](http://stackoverflow.com/questions/8110294/nodejs-base64-image-encoding-decoding-not-quite-working) – fider

回答

7

您只需將圖像的src設置爲base 64數據即可查看圖像。

var image = document.getElementById('myImage'); 
image.src = "data:image/jpeg;base64," + justTheData; 
+4

我想將文件保存到磁盤;不要爲瀏覽器生成它。但謝謝你的努力,西蒙。 – mukama

+0

您可能需要編寫一個插件...我爲iOS編寫了一個插件,將畫布圖像保存到照片庫中,您可能需要做類似的事情。也許首先看看圖像如何保存在Cordova Android Camera API中? – Devgeeks

+1

那麼你問:「我希望能夠查看base64字符串生成的圖像。」所以這就是我的回答。您正在將base64數據寫入文件。如果你將這些數據加載到一個字符串中,並像我提到的那樣設置src,它將是可見的。如果你想將base64字符串轉換成二進制png文件,你需要編寫一個插件來完成它。 –

0

這裏沒有必要按照更換的base64字符串,只需設置轉換字符串:

在JavaScript

var image = document.getElementById('myImage'); 
image.src = justTheData;// this convert data 

jQuery中:

$("#imageid").attr("src",justTheData) 
相關問題