从 Base64 字符串保存图像不会打开 [重复]
Posted
技术标签:
【中文标题】从 Base64 字符串保存图像不会打开 [重复]【英文标题】:Saving an Image from Base64 String Does not Open [duplicate] 【发布时间】:2015-02-21 11:56:54 【问题描述】:在客户端,我使用 Jquery 将图像从图像转换为 Base64 字符串并将其发送回服务器。在服务器上,我按原样存储字符串,并且当我很好地显示图像时,它也会在所需的页面上呈现。但是,当我在下面使用此类时,我无法将图像存储在服务器上的磁盘上,也无法使用 ImageIO.read 或使用输出流,之后它不会显示出来。
public static void saveCompanyLogo(String path,String logo,String comId)
String s[]=logo.split(";");
String format=s[0].substring(11);
File file = new File(path+"SecurePass\\logos\\");
if (!file.exists())
boolean result = false;
try
File f=new File(path+"SecurePass\\logos\\");
f.mkdir();
result = true;
catch(SecurityException se)
//handle it
if(result)
byte[] b=Base64.decodeBase64(logo.replaceAll(" ", "+"));
try (OutputStream stream = new FileOutputStream(path+"SecurePass\\logos\\"+comId+"."+format))
stream.write(b);
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
我根据溢出用户的建议使用 replaceAll,但不行。请帮忙。在上面的代码中,“logo”包含 Base64 字符串。我也使用 ImageIO.read 使用 imagereaders 但不行。数据好像有问题。
谢谢。
【问题讨论】:
【参考方案1】:您可以使用canvas
轻松完成。像这样:
var img =document.getElementbyId('image');
function baseImage(img) // img is the image object
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
// Get the data-URL formatted image
var dataURL = canvas.toDataURL("image/jpeg");
return dataURL.replace("data:image/jpeg;base64,", "");
【讨论】:
你没有很好地阅读这篇文章..我是说我在服务器上有问题..上面的代码是服务器端代码..我只是想将 base64 字符串保存为图像... on服务器...为什么要标记我...我在客户端方面没有问题...!【参考方案2】:我们必须从客户端字符串中删除字符串..这篇文章的详细信息..
Convert base64 string to image
【讨论】:
以上是关于从 Base64 字符串保存图像不会打开 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
从base64数据字符串保存画布图像服务器端时,它会产生空白图像
Matplotlib:从远程服务器获取base64图像[重复]
如何使用 PHP 从 base64 编码的数据/字符串创建图像并将其保存到网站文件夹