내 코드는 다음과 같습니다.
protected void SaveMyImage_Click(object sender, EventArgs e)
{
string imageUrl = Hidden1.Value;
string saveLocation = Server.MapPath("~/PictureUploads/whatever2.png") ;
HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
WebResponse imageResponse = imageRequest.GetResponse();
Stream responseStream = imageResponse.GetResponseStream();
using (BinaryReader br = new BinaryReader(responseStream))
{
imageBytes = br.ReadBytes(500000);
br.Close();
}
responseStream.Close();
imageResponse.Close();
FileStream fs = new FileStream(saveLocation, FileMode.Create);
BinaryWriter bw = new BinaryWriter(fs);
try
{
bw.Write(imageBytes);
}
finally
{
fs.Close();
bw.Close();
}
}
}
상단 imageUrl 선언은 Base64 이미지 문자열을 가져 와서 이미지로 변환하고 싶습니다. 내 코드 세트는 Base64 문자열이 아닌 “www.mysite.com/test.jpg”와 같은 이미지에서만 작동한다고 생각합니다. 누구든지 제안이 있습니까? 감사!
답변
다음은 문자열 매개 변수를 허용하도록 메서드를 수정할 수있는 예입니다. 그런 다음 image.Save (…)으로 이미지 객체를 저장하십시오 .
public Image LoadImage()
{
//data:image/gif;base64,
//this image is a single pixel (black)
byte[] bytes = Convert.FromBase64String("R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==");
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return image;
}
A generic error occurred in GDI+.
바이트가 비트 맵을 나타내는 경우 예외가 발생할 수 있습니다 . 이런 일이 발생하면 메모리 스트림을 폐기하기 전에 이미지를 저장하십시오 (여전히 using 문 안에 있음).
답변
Base64를 파일에 직접 저장할 수 있습니다.
string filePath = "MyImage.jpg";
File.WriteAllBytes(filePath, Convert.FromBase64String(base64imageString));
답변
여기에 내가 끝내는 것이 있습니다.
private void SaveByteArrayAsImage(string fullOutputPath, string base64String)
{
byte[] bytes = Convert.FromBase64String(base64String);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
image.Save(fullOutputPath, System.Drawing.Imaging.ImageFormat.Png);
}
답변
비트 맵을 통해 제안합니다.
public void SaveImage(string base64)
{
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64)))
{
using (Bitmap bm2 = new Bitmap(ms))
{
bm2.Save("SavingPath" + "ImageName.jpg");
}
}
}
답변
필자의 경우 두 줄의 코드에서만 작동합니다. 아래 C # 코드를 테스트하십시오.
String dirPath = "C:\myfolder\";
String imgName = "my_mage_name.bmp";
byte[] imgByteArray = Convert.FromBase64String("your_base64_string");
File.WriteAllBytes(dirPath + imgName, imgByteArray);
그게 다야. 이 솔루션이 실제로 도움이된다면 친절하게 투표하십시오. 미리 감사드립니다.
답변
다음은 이미지를 base64 문자열에서 Image
객체 로 변환하고 고유 한 파일 이름을 가진 폴더에 저장하는 작업 코드입니다 .
public void SaveImage()
{
string strm = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
//this is a simple white background image
var myfilename= string.Format(@"{0}", Guid.NewGuid());
//Generate unique filename
string filepath= "~/UserImages/" + myfilename+ ".jpeg";
var bytess = Convert.FromBase64String(strm);
using (var imageFile = new FileStream(filepath, FileMode.Create))
{
imageFile.Write(bytess, 0, bytess.Length);
imageFile.Flush();
}
}
답변
비슷한 시나리오에서 나를 위해 일한 것은 다음과 같습니다.
byte[] bytes = Convert.FromBase64String(Base64String);
ImageTagId.ImageUrl = "data:image/jpeg;base64," + Convert.ToBase64String(bytes);
ImageTagId
ASP 이미지 태그의 ID입니다.
