我把一個小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