我可以让 Android WebView 支持其他图像格式(例如 TIFF)吗?
Can I make Android WebView support other image formats (e.g. TIFF)?
例如,如何使下面的 HTML 页面在 Android WebView 中实际显示图像?
<html>
<body>
<img src="http://www.alternatiff.com/sample.tif">
</body>
</html>
欢迎任何(黑客)建议。我只是一个应用开发者,无法控制整个系统,所以修改OS源代码不适用
我没试过,但我会这样做:
- 创建
WebViewClient
的子类
- 覆盖
shouldInterceptRequest()
以检查 URL 并查看是否请求了 TIFF。如果不是 TIFF,return null
告诉 WebView
自己处理请求。
- 如果请求 TIFF,请打开
HttpURLConnection
到 TIFF url 并读取数据,将 TIFF 转换为 JPEG 或 PNG ex. How to convert TIFF to JPEG/PNG in java 并设置 InputStream
读取 JPEG/PNG 个图像字节。
- Return a
WebResourceResponse
与 mime 类型(即 image/jpeg)和您创建的 InputStream
以读取图像数据。
- 使用您的
WebViewClient
子类的实例在网络视图上调用 setWebViewClient
。
与其使用 JNI 库在设备上转换,我想我会在服务器上转换图像并打开 HttpURL连接到预转换的图像流,即 http://example.com/convert_tiff?url=http%3A%2F%2Fwww.alternatiff.com%2Fsample.tif&fmt=JPEG然后 return 即 InputStream
在 WebResourceResponse
中。我想这取决于带宽和服务器资源对您来说有多便宜。
例如,如何使下面的 HTML 页面在 Android WebView 中实际显示图像?
<html>
<body>
<img src="http://www.alternatiff.com/sample.tif">
</body>
</html>
欢迎任何(黑客)建议。我只是一个应用开发者,无法控制整个系统,所以修改OS源代码不适用
我没试过,但我会这样做:
- 创建
WebViewClient
的子类
- 覆盖
shouldInterceptRequest()
以检查 URL 并查看是否请求了 TIFF。如果不是 TIFF,returnnull
告诉WebView
自己处理请求。 - 如果请求 TIFF,请打开
HttpURLConnection
到 TIFF url 并读取数据,将 TIFF 转换为 JPEG 或 PNG ex. How to convert TIFF to JPEG/PNG in java 并设置InputStream
读取 JPEG/PNG 个图像字节。 - Return a
WebResourceResponse
与 mime 类型(即 image/jpeg)和您创建的InputStream
以读取图像数据。 - 使用您的
WebViewClient
子类的实例在网络视图上调用setWebViewClient
。
与其使用 JNI 库在设备上转换,我想我会在服务器上转换图像并打开 HttpURL连接到预转换的图像流,即 http://example.com/convert_tiff?url=http%3A%2F%2Fwww.alternatiff.com%2Fsample.tif&fmt=JPEG然后 return 即 InputStream
在 WebResourceResponse
中。我想这取决于带宽和服务器资源对您来说有多便宜。