• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# PictureBox.ImageLocation ścieżka rzeczywista na ścieżkę względną

Object Storage Arubacloud
+1 głos
357 wizyt
pytanie zadane 26 lipca 2020 w C# przez StevedeLosta Początkujący (290 p.)

Witam.

Wybieram ścieżkę 

pictureBox1.ImageLocation = ofd.FileName;

Następnie przypisuje ją do zmiennej

imageLocation = pictureBox1.ImageLocation;

Z tej zmiennej zapisuje ścieżkę do bazySQL. Problem polega na tym że ścieżka jest pełna czyli C:\folder\project\picture\picture.jpg

A mi zależy żeby była względna czyli zaczynała się od miejsca gdzie jest główny project np: "picture\picture.jpg" 

Proszę o sugestię, czego mam się nauczyć?

Dziękuje.

3 odpowiedzi

+1 głos
odpowiedź 26 lipca 2020 przez piotrsz109 Stary wyjadacz (13,730 p.)
komentarz 26 lipca 2020 przez StevedeLosta Początkujący (290 p.)
edycja 27 lipca 2020 przez StevedeLosta
Dziękuje za podpowiedź.

Rozwiązanie niżej.
+1 głos
odpowiedź 27 lipca 2020 przez VBService Ekspert (254,490 p.)
edycja 27 lipca 2020 przez VBService
            string app_path = Environment.CurrentDirectory;
            string img_path = "img\\img1.jpg";
            
            imageLocation = Path.Combine(app_path, img_path);
            label1.Text = imageLocation;

            imageLocation = imageLocation.Replace(Environment.CurrentDirectory + "\\", "");
            label2.Text = imageLocation;

Environment.CurrentDirectory Property ]

            string app_path = Environment.CurrentDirectory;
            string img_path = "img\\img2.jpg";
            
            imageLocation = Path.Combine(app_path, img_path);
            label1.Text = imageLocation;

            imageLocation = string.Concat(Directory.GetParent(app_path).Name, "\\", Path.GetFileName(app_path));
            label2.Text = imageLocation;

Concatenate String - C# ] [ Directory.GetParent(String) Method ]

0 głosów
odpowiedź 27 lipca 2020 przez StevedeLosta Początkujący (290 p.)

Dziękuje za podpowiedź. 

Rozwiązanie:

imageLocation = pictureBox1.ImageLocation; //D:\StevedeLosta\Visual_Studio\C#_StevedeLosta\Magazyn\Magazyn\bin\Debug\magazynJpg\Z20.png
ConvertPath();

void ConvertPath()
        {

            string[] files;
            files = imageLocation.Split(';');
            foreach (string file in files) 
            {
                imageLocation = @"magazynJpg\" + Path.GetFileName(file);
            }

        }

Po konwersji ładuje do bazySQL tylko ścieżke "magazynJpg\Z20.png". 

A tutaj uproszczona wersja kodu bez pętli "foreach"

void ConvertPath()
        {
            string[] files;
            files = imageLocation.Split(';');
            string file = files[0];
            imageLocation = @"magazynJpg\" + Path.GetFileName(file);
        }
komentarz 27 lipca 2020 przez VBService Ekspert (254,490 p.)
edycja 27 lipca 2020 przez VBService

To jest "naciągana, uproszczona" wink wersja, pobierasz tylko pierwszy "obrazek" z kolekcji.

Spróbuj pobrać ścieżkę do bazy gdy będziesz mieć więcej obrazków w katalogu "magazynJpg". np.: magazynJpg\Z20.png, magazynJpg\Z21.png, magazynJpg\Z22.png wink

Druga sprawa:

magazynJpg\Z20.png

chyba raczej:

magazynJpg\Z20.jpg

magazynPng\Z20.png itd. wink

komentarz 27 lipca 2020 przez StevedeLosta Początkujący (290 p.)

Tak, naciągana ale w zupełności wystarczająca ponieważ tutaj chodziło mi tylko o skrócenie ścieżki do postaci w której zapisywana jest do SQL. To ma w późniejszym czasie uchronić program przed zgubieniem ścieżki do png gdy projekt znajdzie się w innym katalogu.smiley

Mam już w katalogu dużo png i wszystko działa poprawnie.

Magazyn

Katalog "magazyJpg" utworzyłem wcześniej ogólnie z myślą o zdjęciach które głównie kojarzą mi się z jpg no a wyszło jak wyszło i trafiają tam png.

Podobne pytania

0 głosów
2 odpowiedzi 473 wizyt
pytanie zadane 8 lipca 2020 w HTML i CSS przez Szyszka Gaduła (3,490 p.)
0 głosów
3 odpowiedzi 1,265 wizyt
pytanie zadane 9 listopada 2017 w Systemy operacyjne, programy przez Milesq Nałogowiec (32,020 p.)
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 18 października 2017 w Grafika i multimedia przez DODO Bywalec (2,950 p.)

92,654 zapytań

141,543 odpowiedzi

319,954 komentarzy

62,022 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...