Zapis pliku z PictureBox do pliku

Zapis pliku z PictureBox do pliku
L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
0

Witam,

Mam taki problem, mam w formie picturebox obraz i chce zapisać do do pliku jak moge to zrobić ?
Zrobiłem już MenuStrip i teraz na przycisku zapiszToolStripMenuItem_Click chce zrobić zapis obrazu do pliku... jak to moge zrobić ?

Da rade ktoś podrzucić mi kod ? Pliki są w formacie BMP

Kopiuj


        public podglad(string path, Size size)
        {
            InitializeComponent();
            pictureBox1.ImageLocation = path;

            this.Size = size;
        }

        public podglad(Image img)
        {
            InitializeComponent();
            pictureBox1.Image = img;
        }
       

      
        private void zapiszToolStripMenuItem_Click(object sender, EventArgs e)
        {
             
        }

          
    

 

Początkujący programista c# :))
edytowany 1x, ostatnio: lider69
1

na przyszłość pogoglaj zanim napiszesz
pictureBox1.Image.Save(string @"sciezka",ImageFormat.Bmp);

L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
0

Ale ja chce zrobić tak, żeby nie od razu zapisywało mi do określonej lokalizacji tylko, żeby można było sobie wybrać folder i nazwać plik, a to co wrzuciłeś to chyba ogranicza do określonej lokalizacji...

wpisałem: pictureBox1.Image.Save(string @"C:\aaa",ImageFormat.Bmp); ale podkreśliło mi i nie działa


Początkujący programista c# :))
edytowany 1x, ostatnio: lider69
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Poczytaj o SaveFileDialog, to dialog, który pomoże Ci wybrać lokalizację do zapisu, a potem robisz to co już masz :)


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
JS
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:17
0

e no myślałem że tyle to już ogarniesz, wywal 'string' i będzie działać ;) a jak chcesz wybierać gdzie ma być zapisany plik, to użyj do tego kontrolki SaveFileDialog i zdarzenia FileOk, które zwraca ścieżkę do pliku, i potem zapisz jak napisałem

L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
0

Ja jestem bardzo początkowy, pisze program po prostu na zaliczenie i dopiero uczę się, a da rade ktoś pomóc mi z kodem ? Ogarnać mi to jakoś szybciej ?:D

pictureBox1.Image.Save(@"D:\aaa.bmp"); - tak zrobiłem i podziałało, ale jeszcze musze zrobić to zeby okno wyskoczyło i pokazało mi gdzie mam zapisać i pod jaką nazwą :D


Początkujący programista c# :))
L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
1

Takie coś znalazłem jeszcze:

Kopiuj
SaveFileDialog save = new SaveFileDialog();
 save.Filter = "(*.bmp)|*.bmp| All files (*.*)|*.*";
 save.FilterIndex = 4;
 save.RestoreDirectory = true;
 if(save.ShowDialog() == DialogResult.OK)
 {
 pictureBox1.Image.Save(save.FileName);
 }

ale coś nie działa :(


Początkujący programista c# :))
KL
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 6 lat
  • Postów:42
0

Następnym razem podawaj błąd bo określenie "nie działa" nie pomaga w zdiagnozowaniu problemu. Nie zapomniałeś czasem o ImageFormat?

L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
0

znalazłem to:

Kopiuj
{
     Stream myStream ;
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();

     saveFileDialog1.Filter = "(*.jpg)|*.jpg|All files (*.*)|*.*"  ;
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;

     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
             // Code to write the stream goes here.
             myStream.Close();
         }
     }
 }

działa, tylko jak potem chce otworzyć obrazek to nie działa


Początkujący programista c# :))
JS
  • Rejestracja:prawie 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:17
0
edytowany 1x, ostatnio: John Smith
L6
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 11 lat
1

teraz działa

Kopiuj
 {
            Stream myStream;
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            saveFileDialog1.Filter = "(*.jpg)|*.jpg|(*.bmp)|*.bmp|All files (*.*)|*.*";
            saveFileDialog1.FilterIndex = 3;
            saveFileDialog1.RestoreDirectory = true;

            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);

            }
        }
     

 

PS
Dzięki za pomoc, potrzebuje jeszcze zrobić wczytanie obrazu do picturebox z skalowaniem do określonej rozdzielczości, gdzie mogę czegoś takiego szukać ?


Początkujący programista c# :))
xeo545x39
  • Rejestracja:ponad 14 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Kosmos
  • Postów:1571
0

Rozdzielczości? Chyba chodzi Ci o wymiary. Wczytywanie zrób za pomocą OpenFileDialog, a skalowanie to wpisz w Google c# picturebox scaling albo w PictureBox masz gotowe skalowanie w SizeMode.


Co kurła debuguj ten kod i streszczaj się klientowi chce się fixa, a jak nie kurła to odpale visuala i ci pomoge a tego byś nie chciał
wedlock
  • Rejestracja:prawie 13 lat
  • Ostatnio:prawie 4 lata
  • Lokalizacja:Bartoszyce
  • Postów:180
0

Czytam ten wątek i mam wrażenie ( jeśli mylne to sorry ) ale chyba autor wątku nie rozgranicza faktu, że pictureBox służy tylko do wyświetlania zawartości zmiennej. Czy to Image czy Bitmap. Jeśli zależy ci na skalowaniu wyświetlanego obrazka to PictureBox zrobi to za ciebie ale zapis na dysk tego obrazka i tak zapisze obrazek taki jaki został załadowany. Żeby przeskalować obrazek i zapisać go przeskalowanym trzeba użyć transformacji z GDI+.

0

najlepiej w googlach albo na forum, bo wydaje mi się że akurat tematów o tym jest sporo, ale polecam najpierw samemu spróbuj po robić to zanim napiszesz na forum, bo momentami wyglądało jakbyś klepał kod dla klepania, a trzeba po prostu czasami trochę po czytać i po próbować.

JS
*porobić, poczytać, popróbować ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.