Javascript与&;C#图像文件数组

Javascript与&;C#图像文件数组,javascript,c#,image,Javascript,C#,Image,在C#中,我使用以下命令将图像文件读入base64编码字符串: var img = Image.FromFile(@"C:\xxx.jpg"); MemoryStream ms = new MemoryStream(); img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); var arr = ms.ToArray(); var b64 = Convert.ToBase64String(arr); 在javascript中,我执行以下操作:

在C#中,我使用以下命令将图像文件读入base64编码字符串:

var img = Image.FromFile(@"C:\xxx.jpg");
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
var arr = ms.ToArray();
var b64 = Convert.ToBase64String(arr);
在javascript中,我执行以下操作:

var f = document.getElementById('file').files[0], //C:\xxx.jpg
r = new FileReader();
r.onloadend = function (e) {

    console.log(btoa(e.target.result));

}
r.readAsBinaryString(f);
我得到了不同的结果


最后,我尝试用Javascript读取它,将其发布到API中,保存到数据库中,然后检索并稍后使用。如果我使用上面的C代码,我可以存储文件并检索/显示它。如果我尝试使用Javascript选项,则无法获得有效的图像。因此,我试图找出它们的不同之处/问题所在。有指针吗?

不是一个有效的图像,你的意思是它不能被读取,或者只是颜色问题?我注意到WinForms Image类按BGRA的顺序存储它们,而我使用的大多数其他API都将其存储为RGBA,因此在转换过程中红色和蓝色会反转。您正在使用
System.Drawing.Imaging.ImageFormat.Gif
将图像保存到流中。您是否应该使用
ImageFormat.Jpeg
?如果我读对了,您的c代码正在将图像转换为base64字符串。但是,您的javascript似乎只是读取二进制数据,而没有转换为base64。谢谢@Matiascero@肖恩:有时候你需要另一双眼睛来修复这些错误。如果不是一张有效的图像,你的意思是它不能被读取,或者只是颜色问题?我注意到WinForms Image类按BGRA的顺序存储它们,而我使用的大多数其他API都将其存储为RGBA,因此在转换过程中红色和蓝色会反转。您正在使用
System.Drawing.Imaging.ImageFormat.Gif
将图像保存到流中。您是否应该使用
ImageFormat.Jpeg
?如果我读对了,您的c代码正在将图像转换为base64字符串。但是,您的javascript似乎只是读取二进制数据,而没有转换为base64。谢谢@Matiascero@肖恩有时你需要另一双眼睛来修复这些错误。