カスタムContentProviderを使用して、ストリームをTempfileとして返すためにopenFile()をオーバーライドします。
このURIをhtmlタグのsrcとして使用できます。ページがロードされるとBASE64データが既に存在する場合@goldenparrot画像のコメントに基づいて
<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();
}
}
}
}
ですか?これはJelly Bean(4.1.1)で動作します。私はキャンバスからイメージを生成することができ、問題なく保存できます。 – alex
srcでimgを作成するのではなく、CSSスタイル 'background-image:url(data:image/png; base64datahere ....);でdivを作成しようとしていますか? – Prasanth