wake-up-neo.com

C # Base64 Zeichenfolge für ein JPEG-Bild

Ich versuche, einen Base64String in ein Bild zu konvertieren, das lokal gespeichert werden muss.

Im Moment kann mein Code das Bild speichern, aber wenn ich das gespeicherte Bild öffne, wird "Ungültiges Bild" angezeigt.

enter image description here

Code:

try
{
    using (var imageFile = new StreamWriter(filePath))
    {
        imageFile.Write(resizeImage.Content);
        imageFile.Close();
    }
}

Die Content ist ein string-Objekt, das den Base64-String enthält.

48
Subby

Also mit dem von dir bereitgestellten Code.

var bytes = Convert.FromBase64String(resizeImage.Content);
using (var imageFile = new FileStream(filePath, FileMode.Create))
{
    imageFile.Write(bytes ,0, bytes.Length);
    imageFile.Flush();
}
72
Paul Farry

Konvertieren Sie zuerst den Basis-64-String in eine Image und verwenden Sie dann die Image.Save-Methode.

So konvertieren Sie die 64-Basiszeichenfolge in Image:

 public Image Base64ToImage(string base64String)
 {
    // Convert base 64 string to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    // Convert byte[] to Image
    using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        Image image = Image.FromStream(ms, true);
        return image;
    }
 }

So konvertieren Sie Image in Base 64-String:

public string ImageToBase64(Image image,System.Drawing.Imaging.ImageFormat format)
{
  using (MemoryStream ms = new MemoryStream())
  {
    // Convert Image to byte[]
    image.Save(ms, format);
    byte[] imageBytes = ms.ToArray();

    // Convert byte[] to base 64 string
    string base64String = Convert.ToBase64String(imageBytes);
    return base64String;
  }
}

Schließlich können Sie einfach Image.Save(filePath); aufrufen, um das Bild zu speichern.

81
Monah
public Image Base64ToImage(string base64String)
{
   // Convert Base64 String to byte[]
    byte[] imageBytes = Convert.FromBase64String(base64String);
    MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

    // Convert byte[] to Image
    ms.Write(imageBytes, 0, imageBytes.Length);
    Image image = Image.FromStream(ms, true);

    return image;
}

Vorderseite :

  <Image Name="camImage"/>

Zurück:

 public async void Base64ToImage(string base64String)
        {
            // read stream
            var bytes = Convert.FromBase64String(base64String);
            var image = bytes.AsBuffer().AsStream().AsRandomAccessStream();

            // decode image
            var decoder = await BitmapDecoder.CreateAsync(image);
            image.Seek(0);

            // create bitmap
            var output = new WriteableBitmap((int)decoder.PixelHeight, (int)decoder.PixelWidth);
            await output.SetSourceAsync(image);

            camImage.Source = output;
        }
0