У меня есть изображение, которое я прочитал в переменную в JS (в конечном итоге через буфер обмена, если это имеет значение) через следующий код.
var rawImg = new Object();
//...populate rawImg (code left out for brevity)
var bis = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
var is = rawImg.value.QueryInterface(Components.interfaces.nsIInputStream);
bis.setInputStream(is);
var img = bis.readBytes(is.available());
img
- это изображение.Я могу проверить это, используя библиотеку Base64, найденную в http://emilsblog.lerch.org/2009/07/javascript-hacks-using-xhr-to-load.html
var base64Img = Base64.encodeBinary( img );
document.getElementById("holder").innerHTML = '<img src="data:image/png;base64,'+base64Img+'" alt="some image"/>';
. Это отобразит изображение соответствующим образом.Этот код чрезвычайно специфичен для Mozilla, и я согласен с этим, так как мои требования поддерживать его строго с FF4 +.
Мой вопрос состоит из двух частей, решение любого из них будет удовлетворительным.Можно ли отобразить это изображение без преобразования в base64, возможно, с тегом <canvas>
?Можно ли передать этот образ на сервер (XHR или другой) в двоичном виде без преобразования в base64?
Я мог бы base64.encode (), передать строку на сервер, затем декодировать на стороне сервера, нокажется, что может быть проще.