2012-07-04 34 views
5

Tôi đang viết một ứng dụng Phonegap cho Android và tại một thời điểm, tôi lưu chuỗi PNG base64 dưới dạng tệp. Tuy nhiên, tôi đã quan sát thấy rằng chuỗi chỉ được đổ vào một tập tin và không thể được xem như là một hình ảnh khi mở ra.Phonegap - Cách tạo tệp hình ảnh từ chuỗi base64?

Tôi muốn để có thể tiết kiệm một hình ảnh tạo ra từ các string.This base64 là những gì tôi có:

Các Javascript (formated cho 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); 
} 

tôi đã cố gắng chỉnh sửa mã để chỉ lưu dữ liệu hình ảnh nhưng nó không hoạt động. (Xem bên dưới)

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 kích hoạt everthing:

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

Xin vui lòng giúp. Cảm ơn bạn.

+0

này có thể là câu trả lời cho questio này n: [stackoferflow question 11321347] (http://stackoverflow.com/questions/8110294/nodejs-base64-image-encoding-decoding-not-quite-working) – fider

Trả lời

7

Bạn chỉ cần đặt src của hình ảnh của bạn thành dữ liệu cơ sở 64 để xem hình ảnh.

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

Tôi đang cố lưu tập tin vào đĩa; không tạo ra nó cho trình duyệt. Nhưng cảm ơn vì đã cố gắng, Simon. – mukama

+0

Bạn có thể cần phải viết một plugin ... Tôi đã viết một plugin cho iOS để lưu một hình ảnh canvas vào Thư viện ảnh, bạn có thể cần phải làm một cái gì đó tương tự. Có thể bắt đầu bằng cách xem các hình ảnh được lưu trong API Camera Android Cordova như thế nào? – Devgeeks

+1

Bạn đã hỏi "Tôi muốn có thể xem hình ảnh được tạo từ chuỗi base64". vì vậy đó là những gì tôi trả lời. Bạn đang viết đúng dữ liệu base64 vào tệp. Nếu bạn tải dữ liệu đó vào một chuỗi và đặt src như tôi đã đề cập, nó sẽ có thể xem được. Nếu bạn muốn chuyển đổi chuỗi base64 đó thành một tệp png nhị phân, bạn sẽ cần phải viết một plugin để làm điều đó. –

0

đây không cần phải thay thế chuỗi base64, chỉ cần đặt chuỗi chuyển đổi bằng cách làm theo:

trong javascript:

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

trong jquery:

$("#imageid").attr("src",justTheData) 
Các vấn đề liên quan