在java中将base64字符串转换为服务器端的图像

时间:2016-12-23 09:21:17

标签: java image-processing base64

我有base64字符串,我想将其转换回图像,而不管服务器端的图像格式如何。我尝试使用以下代码,图像正在创建,但当我尝试预览它时,显示错误无法加载图像。

public void convertStringToImage(String base64) {
        try {
            byte[] imageByteArray = decodeImage(base64);

            FileOutputStream imageOutFile = new FileOutputStream("./src/main/resources/demo.jpg");
            imageOutFile.write(imageByteArray);
            imageOutFile.close();
        } catch (Exception e) {
            logger.log(Level.SEVERE, "ImageStoreManager::convertStringToImage()" + e);
        }
    }


    public static byte[] decodeImage(String imageDataString) {
        return Base64.decodeBase64(imageDataString);
    }

我该怎么做才能使我的图像看起来合适?

2 个答案:

答案 0 :(得分:1)

您的代码看起来很好。我可以为您建议一些更多的调试步骤。

  1. 使用例如webpage
  2. 手动编码您的文件
  3. 比较GraphRequest request = GraphRequest.newGraphPathRequest( accessToken, "/GAMETIMETV/feed", new GraphRequest.Callback() { @Override public void onCompleted(GraphResponse response) { // Insert your code here } }); Bundle parameters = new Bundle(); parameters.putString("fields","name,message,created_time,link,attachments{media{image}}"); request.setParameters(parameters); request.executeAsync(); 是否包含与您在网页上看到的完全相同的内容。 //如果这里有问题,你的请求已损坏,可能是前端的一些编码问题?
  4. 查看在String base64下创建的文件内容并比较内容(大小,二进制比较)//如果出现问题,您将知道实际保存操作已损坏
  5. 说明:

    • 您是否在关闭之前尝试./src/main/resources/demo.jpg
    • 您当前表单中的代码可能会导致资源泄漏,请查看try-with-resources

答案 1 :(得分:0)

试试这个:

public static byte[] decodeImage(String imageDataString) {
    return org.apache.commons.codec.binary.Base64.decodeBase64(imageDataString.getBytes());
}