所以我有这个简单的应用程序,我想要做的是,当我点击按钮时,我想打开WebView并显示带有我的图像的自定义HTML网站(现在它将是res / drawable文件夹上的一个图标)
这就是我的WebView的样子:
public class WebViewActivity extends Activity {
private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
//webView.loadUrl("http://www.google.com");
//image to byte[]
Bitmap bmBef = null;
Bitmap bmAft = null;
BitmapFactory.Options bmo = new BitmapFactory.Options();
bmo.inPreferredConfig = Config.ARGB_8888;
String patth = "android.resource://com.mkyong.android/drawable/ic_launcher.png";
bmBef = BitmapFactory.decodeFile(patth, bmo);
//byte[] b = bitmapToByteArray(bmBef);
byte[] imageRaw = bitmapToByteArray(bmBef);
String image64 = Base64.encodeToString(imageRaw, Base64.DEFAULT);
String customHtml = "<html><body><h1>Hello, WebView</h1><img src=\"data:image/jpeg;base64," + image64 + "\" /></img></body></html>";
webView.loadData(customHtml, "text/html", "UTF-8");
}
public static byte[] bitmapToByteArray(Bitmap bm) {
// Create the buffer with the correct size
int iBytes = bm.getWidth() * bm.getHeight() * 4;
ByteBuffer buffer = ByteBuffer.allocate(iBytes);
// Log.e("DBG", buffer.remaining()+""); -- Returns a correct number based on dimensions
// Copy to buffer and then into byte array
bm.copyPixelsToBuffer(buffer);
// Log.e("DBG", buffer.remaining()+""); -- Returns 0
return buffer.array();
}
}
但它崩溃了
int iBytes = bm.getWidth() * bm.getHeight() * 4;
我错过了什么?是错误的路径,然后在那条路上没有图像,所以我得到一个nullpointer?
我该如何修复路径?
在未来,我想用相机拍照并使用它,而不是我现在使用的图标。
答案 0 :(得分:0)
当你说它崩溃时,错误是什么?查看LogCat输出中的问题来源。在此期间,此代码在WebView中为我加载图像:
File rootDirectory = mContext.getFilesDir();
String baseUrl = "file://" + rootDirectory.getAbsolutePath() + File.separator + filePath + File.separator;
String imageName = <somthing_that_provides_your_fiename>;
Bitmap image = BitmapFactory.decodeFile(rootDirectory.getAbsolutePath() + File.separator + filePath + imageName);
WindowManager windowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
int width = display.getWidth();
int scale = width * 100 / image.getWidth();
browser.setInitialScale(scale);
browser.loadUrl(baseUrl + imageName);
我正在根据宽度缩放图像,但您可能需要检查宽度和高度。