Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Android浏览器中将图像渲染为数据流_Javascript_Android_Html5 Canvas - Fatal编程技术网

Javascript 在Android浏览器中将图像渲染为数据流

Javascript 在Android浏览器中将图像渲染为数据流,javascript,android,html5-canvas,Javascript,Android,Html5 Canvas,我制作了一个小程序,将HTML画布转换为图像(通过使用Nihilogic的canvas2image JavaScript库),然后用生成的图像替换画布,并显示一条消息,通知用户触摸(长)该图像,以便将其保存到手机中 我遇到的问题是,Android的默认web浏览器(“Internet”)不会呈现表示图像的base64编码数据流,而是显示问号。有办法解决这个问题吗?如果是,则如何?使用自定义ContentProvider并重写openFile(),将流作为临时文件返回 您可以使用URI作为html

我制作了一个小程序,将HTML画布转换为图像(通过使用Nihilogic的canvas2image JavaScript库),然后用生成的图像替换画布,并显示一条消息,通知用户触摸(长)该图像,以便将其保存到手机中


我遇到的问题是,Android的默认web浏览器(“Internet”)不会呈现表示图像的base64编码数据流,而是显示问号。有办法解决这个问题吗?如果是,则如何?

使用自定义ContentProvider并重写openFile(),将流作为临时文件返回

您可以使用URI作为html A标记中的src

<a src="Example://file"></a>

根据@goldenparrot的评论,可以用

<img src="data:image/png;base64,BASE64_STRING_HERE" />

加载页面时,base64数据已经存在时(以及建议的css背景图像)。但是,当动态输入完全相同的数据字符串时,由于某些原因,它不起作用。即使是静态加载了base64数据的图像也存在问题:它对长时间单击没有任何反应,因此无法下载。我使用的是安卓2.3.6

编辑:您还可以尝试添加其他下载链接

<a href="data:application/octet-stream;base64,BASE64_STRING_HERE">download file</a>

但这对我不起作用。Android只是将该文件的内容显示为文本。普通桌面web浏览器确实打开了“下载文件”对话框,但并没有为该文件建议任何扩展名,所以用户必须手动添加该文件

另见


我的测试html页面是

您正在运行的Android版本是什么?它在果冻豆(4.1.1)中起作用。我可以从画布生成图像,并且可以毫无问题地保存它。您是否可以尝试使用css样式
background image:url(数据:image/png;base64datahere…)创建一个div可以代替使用src创建img?非常好的解决方案。这种解决方案总是向项目团队提供一个完整的控制开发模型,允许您处理异常以修复它,并在不需要处理异常时保持默认方式。但我认为这似乎是一个很好的方法,如果并且只有当向后兼容性也是你关注的焦点时。@tys。这到底是什么语言?我不知道Android平台上的.Java。据我所知,此解决方案仅适用于经过应用软件修改的智能手机,对吗?这是针对设备上的本机Android应用程序的。
<a href="data:application/octet-stream;base64,BASE64_STRING_HERE">download file</a>