将base64编码的jpeg图像转换为base64编码的jpg / png / gif / tiff图像?

时间:2014-08-09 01:52:25

标签: java javascript image base64 cordova-plugins

我正在使用名为屏幕截图的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,但没有运气;(

0 个答案:

没有答案