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