Strona 1 z 1

Rozszerzenie konwersji do formatu BMP o inne znane formaty.

Nowy postNapisane: czwartek, 7 lutego 2019, 13:35
przez Peter_M
Witam, bazując na poradzie dotyczącej konwersji pliku JPG do formatu BMP Link chciałem rozszerzyć tę funkcjonalność o inne znane formaty typu PNG, Gif. Nie było by w tym nic dziwnego gdyby nie jeden problem. Otóż próbując zaimplementować swój zamysł za skarby świata nie potrafię tego połączyć w całość. Mam tu na myśli mechanizm tzn.
Jeżeli zostanie otworzone okno wyboru plików, przykładowo, OpenPictureDialog lub Open Dialog, to po wybraniu filtru powiedzmy formatu PNG, ma się wykonać kod odpowiedzialny za konwersję formatu PNG do BMP, analogicznie gdy wybiorę format gif, ma się wykonać kod odpowiedzialny za konwersję formatu GIF do BMP, itd. Pojedynczo kiedy zamienię kod odpowiedzialny za konwersję do formatu JPG, to wszystko działa tak jak chcę.
Swój zamysł próbowałem zrobić wywołując metodę switch and case i przypisując do filterindexów poszczególne casy, ale bez skutku.
Co więcej, najlepszy efekt udało mi się uzyskać wywołując zdarzenie onChangeType komponentu Open Picture Dialog oraz sprawdzając ifem FileExists, ale to działa dopiero za drugim razem, kiedy przeładuję obrazek, nie mam pojęcia jak to uczynić aby zadziałało za pierwszym razem.
Bo równie dobrze mógłbym na formę dodać kilka Radiobuttonów, albo checkboxów i w poszczególne metody wpisać kody odpowiedzialne za konwersję innych formatów, ale jeśli możliwe jest w komponencie OpenPictureDialog to bardzo poprosił bym o poradę, w jaki sposób mogę to zrobić?


Swoją drogą, mam nadzieję że tym razem nie jest chaotycznie i w miarę jasno piszę o co mi chodzi :)

Re: Rozszerzenie konwersji do formatu BMP o inne znane formaty.

Nowy postNapisane: czwartek, 7 lutego 2019, 15:18
przez Mironas
Jeśli Cię dobrze zrozumiałem, to wybierasz w OpenDialog-u plik a potem chcesz określić jaki typ pliku został wybrany.
Pobierz nazwę pliku z OpenDialog1->FileName a potem ustal rozszerzenie tego pliku:
KOD cpp:     UKRYJ  
  String plik = OpenDialog1->FileName;
  String ext = ExtractFileExt(plik).LowerCase();
  if ( ext == ".jpg" || ext == ".jpeg" )
  {/* tutaj obsługujesz JPG-i */}
  else if ( ext == ".png" )
  {/* tutaj obsługujesz pliki PNG */}
  // i tak dalej
 

Re: Rozszerzenie konwersji do formatu BMP o inne znane formaty.

Nowy postNapisane: czwartek, 7 lutego 2019, 19:47
przez Peter_M
Wiesz co, to może mieć sens. Spróbuję.
Tak dokładnie o to mi chodziło, wybieram filtr z rozszerzeniem w open dialogu jakie chce obsługiwać i plik.
Poinformuje czy zadziałało.
//Edit
Zadziałało, faktycznie twój zamysł był właściwym rozwiązaniem tej zagwozdki. Serdecznie dziękuję za okazaną pomoc.