Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bitmapa na Base64


Mr. Krzysio

Rekomendowane odpowiedzi

Opublikowano

Witam,

Zapisanie obrazka na dysku działa, jednak mam problem z zamianą tego obrazka na base64. Otrzymuję pusty string.

Kod, który nie działa:
 

                EncoderParameters myEncoderParameters = new EncoderParameters(1);
                System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
                EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
                myEncoderParameters.Param[0] = myEncoderParameter;
                ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg); 

                //Create a new bitmap.
                var bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
                               Screen.PrimaryScreen.Bounds.Height,
                               PixelFormat.Format32bppArgb);

                // Create a graphics object from the bitmap.
                var gfxScreenshot = Graphics.FromImage(bmpScreenshot);

                    // Take the screenshot from the upper left corner to the right bottom corner.
                    gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                                                Screen.PrimaryScreen.Bounds.Y,
                                                0,
                                                0,
                                                Screen.PrimaryScreen.Bounds.Size,
                                                CopyPixelOperation.SourceCopy);

                    //bmpScreenshot.Save(fileName, jpgEncoder, myEncoderParameters); // Save screenshot

                    MemoryStream ms = new MemoryStream();
                    bmpScreenshot.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    imageData = Convert.ToBase64String(ms.ToArray()); //here you should get a base64 string

@Edit Wczytuję Bitmape z pliku w ten sposób:

Bitmap bImage = new Bitmap("C:\\Users\\Krzysztof\\Desktop\\lol.bmp");

Działa na jakimś tam obrazku bmp, ale nie chce działać na tym zrobionym przez program, zapisują go w ten sposób:

bmpScreenshot.Save("C:\\Users\\Krzysztof\\Desktop\\lol.bmp", System.Drawing.Imaging.ImageFormat.Bmp);

@Edit2

Sprawdzałem już nie jedną funkcję znalezioną w sieci, ostatnio znalazłem taką:
 

        static string base64String = null;
        public string ImageToBase64()
        {
            MessageBox.Show("aaa");
            string path = "C:\\Users\\Krzysztof\\Desktop\\zd.JPG";
            using (System.Drawing.Image image = System.Drawing.Image.FromFile(path))
            {
                using (MemoryStream m = new MemoryStream())
                {
                    image.Save(m, image.RawFormat);
                    byte[] imageBytes = m.ToArray();
                    base64String = Convert.ToBase64String(imageBytes);
                    return base64String;
                }
            }
        } 

Wywołuję ją z innej funkcji:

MessageBox.Show(ImageToBase64());

I teraz mnie ciekawi dlaczego MessageBox.Show("aaa"); się wyświetla, a ten w którym jest wywołanie funkcji już nie, mam tak zawsze jak próbuję wyświetlić base64String. Mam tylko 1 obrazek na całym komputerze na którym ta konwersja działa normalnie. O co chodzi? Pomocy! :|

 

@Edit3 Ehh... Najwidoczniej nie da się tego wyświetlić w całości w MsgBox :)

giphy.gif

  • 2 lata później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...