我从画布获得base64编码的图像:
var dataURL = canvas.toDataURL( "image/png" );
Run Code Online (Sandbox Code Playgroud)
然后我把它变成这样的数据:
//Remove the beginning identifier and use Chrome/Firefox?safari built int base64Decoder
var data = atob( dataURL.substring( "data:image/png;base64,".length ) );
Run Code Online (Sandbox Code Playgroud)
然后我通过以下方式将其写入文件系统:
event.createWriter(
function(writerEvent)
{
//The success handler
writerEvent.onwriteend = function(finishEvent)
{
...
};
//Error handler
writerEvent.onerror = settings.error;
// Create a new Blob
var blob = new Blob( [ data ], { type: "image/png" } );
//Write it into the path
writerEvent.write( blob );
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将其设置为图像的src,如下所示:
document.getElementById( "saved" ).src = event.toURL();
Run Code Online (Sandbox Code Playgroud)
这写了文件,我能够找到它并获得一个网址(通过阅读和使用事件:event.toURL() …
我有一个Data:URL(参见:http://en.wikipedia.org/wiki/Data_URI_scheme)(作为NSString),我想在Safari中打开它.你将如何实现这一点(我试过openURL:.)
示例:
data:text/html;base64,(Some Base64 Encoded Data Here)
Run Code Online (Sandbox Code Playgroud) 我有一个画布,我使用以下代码上传图像:
function handleImage(e){
var reader = new FileReader();
reader.onload = function(event){
var img = new Image();
img.onload = function(){
canvas.width = img.width;
canvas.height = img.height;
ctx.drawImage(img,0,0);
}
img.src = event.target.result;
}
reader.readAsDataURL(e.target.files[0]);
}
Run Code Online (Sandbox Code Playgroud)
现在我想使用canvas.toDataURL()它将图像加载到另一个画布.代码是:
var dataURL = canvas.toDataURL();
drawDataURIOnCanvas(dataURL,canvas2);
function drawDataURIOnCanvas(dataURL, name_of_canvas) {
var myCanvas = document.getElementById(name_of_canvas);
var img3 = new Image;
var ctx2 = myCanvas .getContext('2d');
img3.onload = function(){
ctx2.drawImage(img3,0,0); // Or at whatever offset you like
};
img3.src = dataURL;
}
Run Code Online (Sandbox Code Playgroud)
如果我把这个工作网址都搞好了.但是我试过的任何图片中产生的网址都是以
数据:图像/ PNG; BASE64,iVBORw0KGgoAAAANSUhEUgAAASwAAACWCAYAAABkW7XSAAAAxUlEQVR4nO3BMQEAAADCoPVPbQhfoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA1v9QAATX68/0AAAAASUVORK5CYII =. …
我想在javascript中生成一系列MIDI音符,然后播放它.许多插件支持MIDI,但我不知道任何支持"data:"URL.生成MIDI内容并不是什么大问题 - 但是将这些内容提供给播放器就是.任何人都知道如何做到这一点 - 如果不是一般,那么至少对于像QuickTime这样的特定插件?
我需要用Python/Django创建一个Code128条形码,它必须嵌入HTML文档中.
我不想在磁盘上制作任何临时(或缓存)文件.这就是我想将它们嵌入数据URI方案的原因.
结果必须是这样的:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">
Run Code Online (Sandbox Code Playgroud)
你能推荐我一个简单的方法吗?
现在我使用ReportLab创建这样的条形码并将它们嵌入到PDF文件中,但我不知道如何将它们导出为数据URI方案.如果这是建议的方法.
我正在考虑data-url在我的mongoDB中存储s 而不是存储对文件的引用或使用GridFS.
数据网址:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMcAAAEsCAYAAAB38aczAAAgAElEQV
Run Code Online (Sandbox Code Playgroud)
我存储的所有文件都是JPG或PNG,大小不到1MB.
我想知道这是否被认为是不好的做法,以及读取和写入操作的性能影响,将data-urls 1)存储在单独的集合中2)作为集合中的元数据.
我对小文件存储的任何其他建议持开放态度.
我有以下数据
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAADSCAMAAACmVC/YAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODMwQTFBMjFDRkYxMTFFNDk1QzNFODQ3NkZGQzk2MEUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODMwQTFBMjJDRkYxMTFFNDk1QzNFODQ3NkZGQzk2MEUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MzBBMUExRkNGRjExMUU0OTVDM0U4NDc2RkZDOTYwRSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MzBBMUEyMENGRjExMUU0OTVDM0U4NDc2RkZDOTYwRSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhgPDfMAAAA2UExURZkAAMzMzJsEBLNmZqYzM5wNDcnAwL+amqMmJsOmprmAgKxNTcazs58aGrZzc6lAQK9aWryNjUb/MzMAAAbVSURBVHja7J3blqMgEEV1kJsg6v//7KQ7ilwKYnfnBXL208Q4vRYnxQGK2/APkAwAAAAAAAD8CrUxNjPGptL3hjHnGDOq9Bemx1/YHy8sHamyzGL0zLk2U/i9IF4YuLvesKYTWbgbY3Yef7+P9ReGwYjoe626qEQ6LfcowoIpMdZfGIY5+76DoKHKHRacU9+Pgtd0ebA2X480Ve7R+oLLSwwpL5FkUI9I5Vr34PPXFm7ij6bHy+BO3/We/B1EykeHd+DlVEs+GiS1iVy5FpnSuuONeImFM2l8zKm0LAlB00PABJ5yFnx7fhTRpy+247+cAZMKdSqjm3YY4tfVYVU4XrDhf7LPZ4cLscyNzyhsuc028a8fhUxYyJmIsimSKQip069d+zUpKvdZN3ggDAtfYKEw0duxtLZhYWT+cw9D2OyoV8JsRBvEY/9ukbTpzR8S5ZZBVTtjLlLutKm1eWEUVZWen/bsxz++3yOVYg0cpVaLwlQM+fikedoam6g5j1sgRlhX+9i4VEdI6KO6TTquXJS0p2XLrnRhySjQ92S1Y8z5D5yqdz0Ls45pW8tlPkSUPJZA0AONjnTxSYiwoZqSzIOYXsTG0p0wJh1cf0UMyzIygvF6pelMGD4T2ZaVTlStHyTMleO8GucwCyUfXJ/MpwgTpMSDXLfyqhwhsnptVFkY1ZEwQY1hefc/fMbC6jbVmmvRQbjsVJNzlZsaRH43XLzvfkwQLvGUkSMTCDZouYisgzem5oW53MWuN9ISUarBUuNz1n6mKu7ZOn4nLREZi6Qy33vzo+twLERNrL4WhgwOMowaTeLRv+9rYVbChRbSeBr1F0Hm9DU5RWSC+RFO5Lq2DuZPpryvS5hFknGawxyezF+xpGU3mZUSvD6oVFS/1kSvLGnAtJwL96UqTadyIqC8Wx/PRPLKmbloOrGpzzQCQWRB1vvvZJPMxNkR1kucvGk5YJaxwjM8fJ9YbhPn0ybzFTK+vZ/ZxjSR0Wk4L1UU5hpep6g86xetNuuira4Iky6vo9aSrS9WXDXcuasIQ63RG23c60mTwo3Hy01hHvZqE1myTvIS/yXXuC6DYRWivMTstbEzOSV9LQW2rqcl0Hc6yd/U2rjvF/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7IdixtjXannItg1w8WxhBniq59rIr/I3OmwiLGHraC/hW/a2s/n+ixg419b8AHyCGES4X6WNZom+2anff7uZwxooP4EQq6XK7irn8aqDIE+yInN3Z58t+v8cdEd7J/7X2wvs5JfyN7Vyfrv9Nmgl2RDHIEKOpCAhAMmj5+KJBGjCC26IPoIhCMBqiKhPFjRHI4BmwmMRgNmyENRiwMNkMZzHadkgGbCQzmSwyfz0PewRvMMx2+jshUJT2YY+jokHqIDcalQn14sspk7ZAaYTPBECmwlA02c9WbKAcjYTPzSJ2z6pPjn2sz00GS5F3O5+jMAAAAAAAAAAAAAAAAAAAAAADAL/n7nOs09bYCYvG3+WlXLNtCzWNnf0HspptVEEu08HuUhcCZy7tyeHRNnuhkhfSW3etH3vF4rP6ghFHJJW/JPeuNMhMX21ErX8q3exMXRXawqIi+KzJThu/FDW4LdZNk8/u9/OWXYmds1qWNj8aWd/75qxC1
Run Code Online (Sandbox Code Playgroud)
有没有办法在imageview中加载dataUrl?
我希望能够输出包含图像的HTML文件(在文件本身内).通过谷歌搜索,我遇到了几种方法:
javascript:imageData<IMG SRC="data:image/gif;base64,[...]"><object ... > tag(虽然这使用了数据URI,因此可能会继承相同的限制)但我不知道浏览器支持哪个更好,或者有其他替代方案.
任何有实际经验的人能为我提供建议吗?谢谢.
我试图从画布中获取dataUrl以使用在各种元素上作为css background-image.但我总是得到以下错误Uncaught TypeError: Object #<HTMLCanvasElement> has no method 'toDataUrl'
这是我的测试代码
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
Your browser does not support the canvas element.
</canvas>
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
alert(c.toDataUrl());
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
又是伪装的安全功能吗?或者我只是愚蠢......
提前致谢
我正在开发一个 angular 4 应用程序。我有一个 base64 编码的图像。我用 node.js 将它保存在文件系统中。
if (body.profilepic != "") {
let base64Data = body.profilepic.split(';base64,').pop();
fs.writeFile("out.png", base64Data, 'base64', function(err) {
if (!err) {
console.log("saved file")
}
});
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法检测到我正在保存的图像的文件类型。现在它只保存 png。
如何检测我收到的图像字符串的文件类型?
我得到的 base64 编码字符串是这样的:
data:image/png;base64,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
Run Code Online (Sandbox Code Playgroud)