使用字符串可能会丢失数据,我将只发布将图像转换为字节数组和再次将数组转换为图像的示例,以及将图像转换为字节数组,转换为字符串并再次转换回来的示例,而不会丢失数据。
MemoryStream ms = new MemoryStream();
Image.FromFile(@"C:\..\..\..\img.jpg").Save(ms,ImageFormat.Jpeg);
byte[] bytes = ms.ToArray();
MemoryStream ms1 = new MemoryStream(bytes);
Image NewImage = Image.FromStream(ms1);
NewImage.Save(@"C:\..\..\..\img1.jpg");
尝试这个,它可能会帮助你产生所需的结果。
如果想要进行字符串和二进制之间的转换,最好使用base64。
MemoryStream ms = new MemoryStream();
Image.FromFile(@"C:\..\..\..\img.jpg").Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] bytes = ms.ToArray();
string byteString = Convert.ToBase64String(bytes);
byte[] NewBytes = Convert.FromBase64String(byteString);
MemoryStream ms1 = new MemoryStream(NewBytes);
Image NewImage = Image.FromStream(ms1);
这应该会给你所需的结果。
MemoryStream ms = new MemoryStream();
Image.FromFile(@"C:\..\..\..\img.jpg").Save(ms,ImageFormat.Jpeg);
byte[] bytes = ms.ToArray();
string byteString = Convert.ToBase64String(bytes);
然后当您将此字符串传递到您的方法中时...
public Image stringToImage(string inputString)
{
byte[] NewBytes = Convert.FromBase64String(inputString);
MemoryStream ms1 = new MemoryStream(NewBytes);
Image NewImage = Image.FromStream(ms1);
return NewImage;
}
Base64
字符串,如此处所示http://www.dailycoding.com/Posts/convert_image_to_base64_string_and_base64_string_to_image.aspx - keyboardPMemoryStream
放在一个using
语句块内,因为目前存在资源泄漏的问题。 - 3Dave