我正在使用名为屏幕截图的this phonegap插件,我愿意将base64编码的图像上传到脸谱版。不幸的是,我收到facebook的错误,说可用的格式只有JPG,PNG,GIF和TIFF。
所以我要么找到一种方法来改变插件的java代码(我之前从未使用过java)或者在我的应用程序中提出了一个javascript函数来转换它,虽然我真的不知道是不是是可能的/值得的。
以下是截图插件的java代码,它对图像进行编码:
else if (action.equals("getScreenshotAsURI")) {
final Integer quality = (Integer) args.get(0);
super.cordova.getActivity().runOnUiThread(new Runnable() {@Override
public void run() {
View view = webView.getRootView();
try {
view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
ByteArrayOutputStream jpeg_data = new ByteArrayOutputStream();
if (bitmap.compress(CompressFormat.JPEG, quality, jpeg_data)) {
byte[] code = jpeg_data.toByteArray();
byte[] output = Base64.encode(code, Base64.NO_WRAP);
String js_out = new String(output);
js_out = "data:image/jpeg;base64," + js_out;
JSONObject jsonRes = new JSONObject();
jsonRes.put("URI", js_out);
PluginResult result = new PluginResult(PluginResult.Status.OK, jsonRes);
callbackContext.sendPluginResult(result);
js_out = null;
output = null;
code = null;
}
jpeg_data = null;
} catch (JSONException e) {
callbackContext.error(e.getMessage());
} catch (Exception e) {
callbackContext.error(e.getMessage());
}
}
});
return true;
}
插件的整个代码可以在我的问题开头的github存储库中找到。我尝试将CompressForma.JPEG
更改为CompressForma.JPG
,但没有运气;(