ďťż

Ładny brzuch

Kiedy wpisuję:

Image1.Picture.LoadFromFile(...)

to wczytuje i wyświetla mi obrazki. Jednak zależy mi na pracy nad tymi obrazkami (negatyw, rozmycie itp.), a to jest możliwe tylko na bitmapach. Jak zrobić, aby program rozpoznawał typ obrazka (bitmapa, jpeg) i jeśli to jest jpeg, konwertował na bitmapę, żebym mógł dalej robić swoje.

I nie proszę tu o artykuły na temat konwersji, bo tego nie brakuje, lecz chodzi mi o rozpoznawanie typu obrazka, wczytanie i ewentualną konwersję.



if (image1.Picture.Graphic is TJPEGImage) then...??

Tylko do uses musisz dopisac JPEG.

Tak, o to mi dokładnie chodziło, dzięki :)

To do tematu mam jeszcze pytania:
Chodzi mi o zgranie każdego wczytanego obrazka do formatu BMP i dalsze operacje na tej zmiennej.
Napisałem coś takiego, co jednak nie działa:
Image1.Picture.LoadFromFile(FileListBox1.FileName); if (image1.Picture.Graphic is TJPEGImage) then begin RysunekJPEG.Create; RysunekJPEG.LoadFromFile(FileListBox1.FileName); RysunekBMP.Create; RysunekBMP.Height := RysunekJPEG.Height; RysunekBMP.Width := RysunekJPEG.Width; RysunekBMP.Canvas.Draw(0, 0, RysunekJPEG); RysunekJPEG.Destroy; end else begin RysunekBMP.LoadFromFile(FileListBox1.FileName); end;
Wysypuje mi się już przy użyciu Create, albo LoadFromFile.
-----------------------------------------------------------------------

I druga sprawa: tworzę nową formę i załączam do formy głównej. Sposób wyświetlania nowej formy to Form2.Show, albo Form2.ShowModal. Jednak z nowej formy nie jestem w stanie odwołać się do formy głównej: Form1.Image1.... nie działa. Wyświetla błąd:
Unable to invoke Code Completion due to errors in source code



Źle skonstruowałeś klasę dla JPEG'a. Powinno być:
Image1.Picture.LoadFromFile(FileListBox1.FileName); if (image1.Picture.Graphic is TJPEGImage) then begin RysunekJPEG:= TJPEGImage.Create(); //...

Nie działa. Program w każdym wypadku kompiluje się. Jednak, gdy próbuję otworzyć plik, program zatrzymuje się w tym miejscu, a na pasku błędów widać: Unit 'FileCtrl' is specific to a platform

Zmienna RysunekBMP także powinna być właściwie utworzona;
zamiast: RysunekBMP.Create;
powinno być: RysunekBMP:= TBitmap.Create();

RysunekBMP.Height := RysunekJPEG.Height;<BR> RysunekBMP.Width := RysunekJPEG.Width;<BR>RysunekBMP.Canvas.Draw(0, 0, RysunekJPEG);
Zamiast tego dalbym
RyunekBMP.Assign(RysunekJPEG);

Niestety to wszystko było wypróbowane z marnym skutkiem. Program wywala się przy Assign, Create, LoadFromFile, dla tych rysunków. Może podam typy tych zmiennych:
RysunekJPEG : TJPEGImage;
RysunekBMP : TBitmap;

A możesz powiedzieć co wywala? (jaki komunikat błędu czy cokolwiek). Przetestowałem kod i działa wg. tego co w powyższych postach napisałem - może podajesz złe ścieżki do plików?
Użytkownik PcSA edytował ten post 17 luty 2008, 21:13
Program kompiluje się, ale przy próbie otwarcia pliku wywala:Unit 'FileCtrl' is specific to a platform

Czy to jest error czy warning? O ile pamiętam to warning tylko i jeśli piszesz aplikacje tylko dla Win32 i nie masz zamiaru kompilować kodu pod kylix'em to nie masz się czego obawiać, a program działa.

Faktycznie, działa. Te warny wyskakiwały zawsze, gdy uruchamiałem program przed Delphi.. heh...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •