我把一个小test web app,一个HTML画布转换为图像(通过使用Nihilogic的canvas2image JavaScript库),则替换所生成的图像的帆布和显示一条消息通知用户触摸(长)该图像以将其保存到他们的手机。渲染图像作为数据流中的Android浏览器
我遇到的问题是Android的默认网页浏览器(“Internet”)不呈现表示图像的base64编码数据流,而是显示问号标志。有没有办法解决这个问题?如果是,那么如何?
我把一个小test web app,一个HTML画布转换为图像(通过使用Nihilogic的canvas2image JavaScript库),则替换所生成的图像的帆布和显示一条消息通知用户触摸(长)该图像以将其保存到他们的手机。渲染图像作为数据流中的Android浏览器
我遇到的问题是Android的默认网页浏览器(“Internet”)不呈现表示图像的base64编码数据流,而是显示问号标志。有没有办法解决这个问题?如果是,那么如何?
使用自定义ContentProvider并重写openFile()以将该流作为Tempfile返回。
您可以使用URI作为html标签中的src。
<a src="Example://file"></a>
public class ExampleProvider extends ContentProvider {
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
//Get your bitmap
Bitmap bmp = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.file_example);
File tempFile = null;
try {
//Create the tempfile form a stream
tempFile = File.createTempFile("tempfile", ".thumb", getContext().getCacheDir());
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.close();
if(mode.equals("r")) {
return ParcelFileDescriptor.open(tempFile, ParcelFileDescriptor.MODE_READ_ONLY);
}
}
catch(IOException e) {
LOGGER.error("Couldn't generate temp file for thumb view, guid:" + guid, e);
}
finally {
if(tempFile != null {
//The unix filesystem automatically deletes the file once all handles are gone
tempFile.delete();
}
}
}
}
基于@goldenparrot图像的注释可以与
<img src="data:image/png;base64,BASE64_STRING_HERE" />
(并且还与建议的CSS背景图像)时的base64数据已经存在当页面加载可以看出。但是,由于某些原因,动态输入完全相同的数据字符串时,它不起作用。即使使用base64数据静态加载的图像也存在问题:它不会以任何方式对长时间点击做出反应,因此无法下载。我正在使用Android 2.3.6。
编辑:您也可以尝试增加额外的下载链接
<a href="data:application/octet-stream;base64,BASE64_STRING_HERE">download file</a>
但它并没有为我工作。 Android只是将文件的内容显示为文本。普通桌面Web浏览器确实打开了“下载文件”对话框,但没有为该文件提供任何扩展名,所以用户必须手动添加它。
参见Browser/HTML Force download of image from src="data:image/jpeg;base64..."
我的测试HTML页面http://kuitsi.bitbucket.org/stackoverflow12113616.html
正在运行什么Android版本?它适用于果冻豆(4.1.1)。我可以从画布生成图像,并可以保存它没有问题。 – alex
你可以尝试,看看是否创建一个与CSS风格'背景图像的div:url(数据:图像/ PNG; base64datahere ....);'工程,而不是与src创建一个IMG? – Prasanth