Zapis pliku z PictureBox do pliku

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



        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)
        {
             
        }

          
    

 
1

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

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

0

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

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

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

1

Takie coś znalazłem jeszcze:

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 :(

0

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

0

znalazłem to:

{
     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

0

nie działa, czyli?
a przykłady kodów masz tutaj: http://msdn.microsoft.com/en-us/library/system.windows.forms.savefiledialog.aspx

1

teraz działa

 {
            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ć ?

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.

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ć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1