logo
small logo
  • Produkty
  • Zamów
  • Wsparcie techniczne
  • Articles
  • Customer panel Wsparcie techniczne
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Glówna strona
  • /
  • Articles
  • /
  • Zapisywanie obrazów z Delphi / C++ Builder / Lazarus
  • Przekształcanie danych z bazy danych w dokument w Delphi / Lazarus / C++ Builder

    3 lutego 2021

    Jak z gąszczu danych zrobić czytelny raport? Oracle DB, MySQL, Microsoft SQL Server, PostgreSQL, FireBird to

    read more
  • Raporty typu Drill-Down w FastReport VCL (Delphi/Lazarus)

    9 lutego 2021

    „Wyszczególnianie” lub „zagłębianie się w dane” to pojęcie o wielu aspektach, które może odnosić się

    read more
  • Instalowanie Fastreport w Lazarus

    17 marca 2021

    W ramach programu edukacji akademickiej postanowiliśmy stworzyć kilka artykułów wsparcia dla studentów. Jeśli tworzysz oprogramowanie biznesowe

    read more
  • Praca z wykresami i wykresami w FastReport VCL

    22 marca 2021

    Nadal publikujemy artykuły pomocnicze dla studentów w ramach programu edukacyjnego Akademii. Każdy programista w pewnym

    read more
  • Podłączenie raportu do danych z FastReport w Lazarusie

    26 marca 2021

    W poprzednim artykule o pracy z wykresami i wykresami, poznaliśmy już grafikę biznesową i kody

    read more

Zapisywanie obrazów z Delphi / C++ Builder / Lazarus

10 sierpnia 2020

BMP, JPEG, TIFF, GIF – istnieje wiele formatów grafiki rastrowej.

1. BMP

Przede wszystkim powinieneś wiedzieć, że BMP jest starym formatem obrazu i nie jest tak popularny wśród użytkowników, są zapisywane tylko obrazy bitmapowe w tym formacie, nie obsługuje wektorowych.

Rozmiar .bmp plików może się różnić w zależności od jakości obrazów. Pomimo faktu, że użytkownicy uważają format BMP za przestarzały, jest on aktywnie używany w wielu sferach. Na przykład wszystkie interfejsy systemu Windows były oparte na tym formacie. Dlaczego dokładnie BMP? Ponieważ jest on wygodny w użyciu podczas tworzenia obrazów, nie tracą one na jakości po edycji. BMP jest często używany w Photoshopie podczas edycji obrazów, format ten jest również łatwy do przesłania do sieci społecznościowych i różnych stron internetowych.

Oczywiście lepiej jest używać nowoczesnych formatów graficznych, ponieważ są one wielowarstwowe i można je przesłać na dowolną stronę bez problemów technicznych. Jednocześnie istnieje wiele opcji edycji tych obrazów i mają one mniejszy rozmiar pliku.

2. JPEG

JPEG jest powszechnie używanym formatem do przechowywania obrazów. Ma dobrą jakość kompresji do oglądania zdjęć. Format ten ma wiele zalet, ponieważ użytkownik ma kilka możliwości, takich jak: zmiana jakości i rozmiaru pliku, łatwe otwieranie obrazu w dowolnej przeglądarce, edycję tego pliku w dowolnym edytorze graficznym, a także mały rozmiar, który nie zajmuje dużo miejsca na komputerach i innych urządzeniach do przechowywania danych. Jeśli nie skompresujesz dużo, jakość obrazu zostanie całkowicie zachowana.

Ten format ma też kilka wad:

a) Nie ma przezroczystości w przeciwieństwie, na przykład do PNG.

b) Jeśli skompresujesz (zmienisz rozmiar) obraz JPG, jego zniekształcenia (lub całkowita strata) będą zauważalne.

c) Nie zaleca się edytowania przywróconego pliku JPG po kompresji, ponieważ może on stracić jakość.

Pomimo tych wad, format ten jest uważany za najbardziej popularny wśród użytkowników.

3. TIFF

Jest to dobrze znany format rastrowy, który obsługuje prawie wszystkie znane przestrzenie kolorów. Obrazy bez kompresji stały się niemal standardem w branży poligraficznej. Istnieją różne algorytmy kompresji, dzięki którym plik zachowuje się nawet bez strat. Plik TIFF może zawierać obraz przechowywany w modelach CMYK, RGB, Lab w trybie kolorów indeksowanych, a także w skali szarości. Pozwala to na wykorzystanie tego formatu do przechowywania różnych obrazów, wykorzystywanych zarówno do przygotowania grafiki internetowej, jak i typografii. Oprócz samego obrazu, TIFF zawiera kanały przezroczystości, które umożliwiają zapisywanie przezroczystych obszarów obrazu lub podświetlanie obiektów między sesjami roboczymi.

Kolejną cechą formatu TIFF jest możliwość zapisania wielu obrazów, które mają własne zestawy atrybutów i właściwości (tagów) w jednym pliku. To sprawia, że TIFF jest podobny do GIF, choć nie ma możliwości tworzenia animowanych obrazów.

Popularność tego formatu ułatwia przenoszenie obrazów między programami i platformami sprzętowymi.

4. GIF

Pliki GIF mają niewielki rozmiar i obsługują proste animacje, czyli zmianę klatek w jednym pliku.

Format GIF jest szeroko rozpowszechniony w dziedzinie tworzenia banerów, a także graficznej powłoki treści wideo. Główną zaletą jest kompresja danych bez wyraźnej utraty jakości na głębokości do 256 kolorów. Animowane obrazy składają się z wielu statycznych klatek, a także danych o wymaganym czasie demonstracji ramki.

Użytkownicy używają formatu GIF w wielu dziedzinach. Na przykład, w projektowanie stron internetowych, projektowaniu graficznym, podczas pisania artykułów lub książek, w sieciach społecznościowych, w postaci banerów reklamowych i innych.

Korzystając z tego formatu, można zmniejszyć rozmiar obrazu, co pozytywnie wpływa na szybkość ładowania stron internetowych.

5. SVG

Ten format jest formatem wektorowym. Krótko mówiąc, przy jego pomocy powstają strony internetowe. SVG to plik tekstowy XML z tagami.
Ten format nie traci jakości obrazu podczas skalowania i przycinania. Aby uzyskać więcej informacji na temat zalet i wad formatu SVG, a także o zapisaniu go z Delphi, przeczytaj tutaj. 

Teraz wiemy, kiedy i jakiego formatu lepiej jest użyć do odpowiednich działań.

 

Tak więc, jak możemy eksportować do tych formatów z aplikacji Delphi / Lazarus?

A bardzo łatwo! Oczywiście nie jest to naszym głównym celem, istnieje wiele opcji. Interesują nas możliwości FastReport VCL, ponieważ za jego pomocą możemy przygotować dokument, plakat, baner – na szczęście projektant wizualny zawiera proste figury graficzne i wiele obiektów z efektami. Możesz natychmiast zobaczyć, w razie potrzeby, zmienić / edytować dokument przed wyeksportowaniem go do żądanego formatu obrazu.

Więc, jak stworzyć / zapisać / wyeksportować do BMP lub GIF z Delphi?

Najpierw musimy stworzyć dokument. Prosty lub złożony – nie ma różnicy.

Teraz, po tym, jak stworzyliśmy obiekt, który chcemy przekształcić w ilustrację, uruchom i zobacz.

Zapisz do

W oknie podglądu wybieramy format zapisywania raportu.

Na przykład musimy wyeksportować do obrazu BMP. Zaznacz i kliknij.

Pojawi się okno ustawień eksportu. Konfigurowanie i zapisywanie.





Porozmawiajmy trochę o ustawieniach.

Możemy zapisać wszystkie strony, bieżącą stronę lub zakres.

Oto zrzuty ekranu, aby porównać ustawienia różnych formatów: (TIFF, JPEG,GIF) 

    

W niektórych przypadkach niektóre ustawienia nie są dostępne (różnice formatów).

Monochromatyczne – obrazy w odcieniach czerni;
Przycinanie stron — czy strony są przycinane;
Jakość JPEG – ustawienie jakości obiektu graficznego;
Rozdzielczość (dpi) – kropki na cal;
Otwórz po wyeksportowaniu – otwarcie dokumentu automatycznie po wyeksportowaniu. Można wskazać, gdzie zapisać plik (w pamięci lokalnej, wysłać jako e-mail, przekazać do FTP lub w chmurze).

Cóż, teraz dowiedzieliśmy się, jak łatwo zapisać raport w formatach graficznych z Delphi / C ++Builder / Lazarus z okna podglądu.

Ale jak możemy zapisać BPM / JPEG / TIFF / GIF bezpośrednio z kodu Delphi / C + + Builder / Lazarus?

Właśnie tak!

Eksport do BMP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button1Click(Sender: TObject);
begin
 {Generowanie raportu. Raport musi zostać wygenerowany przed wyeksportem}
 frxReport1.PrepareReport();
 {Ustaw zakres stron do wyeksportowania. Domyślnie eksportowane są wszystkie strony wygenerowanego raportu}
 frxBMPExport1.PageNumbers := '2-3';
 {Ustaw, czy chcesz wyeksportować każdą stronę do osobnego pliku.}
 {.N zostanie dodany do nazwy pliku, gdzie N jest numerem seryjnym strony}
 frxBMPExport1.SeparateFiles := True;
 {Ustaw, czy chcesz wyeksportować do obrazu monochromatycznyego}
 frxBMPExport1.Monochrome := False;
 {Ustawianie, czy mają być przycinane puste krawędzie (marginesy strony)}
 frxBMPExport1.CropImages := False;
 {Ustaw rozdzielczość DPI}
 frxBMPExport1.Resolution := 96;
 {Ustaw, czy plik wynikowy ma być otwarty po wyeksportowaniu}
 frxBMPExport1.OpenAfterExport := False;
 {Ustaw, czy chcesz wyświetlić postęp eksportu (pokaż, która strona jest obecnie eksportowana)}
 frxBMPExport1.ShowProgress := False;
 {Ustawianie, czy ma być wyświetlane okno dialogowe filtru eksportu}
 frxBMPExport1.ShowDialog := False;
 {Ustaw nazwę wynikowego pliku.}
 {Należy pamiętać, że jeśli nazwa pliku nie zostanie ustawiona i wyłączysz okno dialogowe filtru eksportu,}
 {Okno dialogowe wyboru nazwy pliku będzie nadal wyświetlane}
 frxBMPExport1.FileName := 'C:\Output\test.bmp';
 {Eksportowanie raportu}
 frxReport1.Export(frxBMPExport1);
end;

 

Eksport do formatu JPEG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TForm1.Button2Click(Sender: TObject);
begin
 {Generowanie raportu. Raport musi zostać wygenerowany przed wyeksportem}
 frxReport1.PrepareReport();
 {Ustaw zakres stron do wyeksportowania. Domyślnie eksportowane są wszystkie strony wygenerowanego raportu}
 frxJPEGExport1.PageNumbers := '2-3';
 {Ustaw, czy chcesz wyeksportować każdą stronę do osobnego pliku.}
 {. N zostanie dodany do nazwy pliku, gdzie N jest numerem seryjnym strony}
 frxJPEGExport1.SeparateFiles := True;
 {Ustaw, czy chcesz wyeksportować do obrazu monochromatycznyego}
 frxJPEGExport1.Monochrome := False;
 {Ustawianie, czy mają być przycinane puste krawędzie (marginesy strony)}
 frxJPEGExport1.CropImages := False;
 {Ustaw jakość jpeg}
 frxJPEGExport1.JPEGQuality := 90;
 {Ustaw rozdzielczość DPI}
 frxJPEGExport1.Resolution := 96;
 {Ustaw, czy plik wynikowy ma być otwarty po wyeksportowaniu}
 frxJPEGExport1.OpenAfterExport := False;
 {Ustaw, czy chcesz wyświetlić postęp eksportu (pokaż, która strona jest obecnie eksportowana)}
 frxJPEGExport1.ShowProgress := False;
 {Ustawianie, czy ma być wyświetlane okno dialogowe filtru eksportu}
 frxJPEGExport1.ShowDialog := False;
 {Ustaw nazwę wynikowego pliku.}
 {Należy pamiętać, że jeśli nazwa pliku nie zostanie ustawiona i wyłączysz okno dialogowe filtru eksportu,}
 {Okno dialogowe wyboru nazwy pliku będzie nadal wyświetlane}
 frxJPEGExport1.FileName := 'C:\Output\test.jpg';
 {Eksportowanie raportu}
 frxReport1.Export(frxJPEGExport1);
end;

 

Eksport do TIFF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button3Click(Sender: TObject);
begin
 {Generowanie raportu. Raport musi zostać wygenerowany przed wyeksportem}
 frxReport1.PrepareReport();
 {Ustaw zakres stron do wyeksportowania. Domyślnie eksportowane są wszystkie strony wygenerowanego raportu}
 frxTIFFExport1.PageNumbers := '2-3';
 {Ustaw, czy chcesz wyeksportować każdą stronę do osobnego pliku.}
 {. N zostanie dodany do nazwy pliku, gdzie N jest numerem seryjnym strony}
 frxTIFFExport1.SeparateFiles := True;
 {Ustaw, czy chcesz wyeksportować do obrazu monochromatycznyego}
 frxTIFFExport1.Monochrome := False;
 {Ustawianie, czy mają być przycinane puste krawędzie (marginesy strony)}
 frxTIFFExport1.CropImages := False;
 {Ustaw rozdzielczość DPI}
 frxTIFFExport1.Resolution := 96;
 {Ustaw, czy plik wynikowy ma być otwarty po wyeksportowaniu}
 frxTIFFExport1.OpenAfterExport := False;
 {Ustaw, czy chcesz wyświetlić postęp eksportu (pokaż, która strona jest obecnie eksportowana)}
 frxTIFFExport1.ShowProgress := False;
 {Ustawianie, czy ma być wyświetlane okno dialogowe filtru eksportu}
 frxTIFFExport1.ShowDialog := False;
 {Ustaw nazwę wynikowego pliku.}
 {Należy pamiętać, że jeśli nazwa pliku nie zostanie ustawiona i wyłączysz okno dialogowe filtru eksportu,}
 {Okno dialogowe wyboru nazwy pliku będzie nadal wyświetlane}
 frxTIFFExport1.FileName := 'C:\Output\test.tif';
 {Eksportowanie raportu}
 frxReport1.Export(frxTIFFExport1);
end;

 

Eksportowanie do pliku GIF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button4Click(Sender: TObject);
begin
 {Generowanie raportu. Raport musi zostać wygenerowany przed wyeksportem}
 frxReport1.PrepareReport();
 {Ustaw zakres stron do wyeksportowania. Domyślnie eksportowane są wszystkie strony wygenerowanego raportu}
 frxGIFExport1.PageNumbers := '2-3';
 {Ustaw, czy chcesz wyeksportować każdą stronę do osobnego pliku.}
 {. N zostanie dodany do nazwy pliku, gdzie N jest numerem seryjnym strony}
 frxGIFExport1.SeparateFiles := True;
 {Ustaw, czy chcesz wyeksportować do obrazu monochromatycznyego}
 frxGIFExport1.Monochrome := False;
 {Ustawianie, czy mają być przycinane puste krawędzie (marginesy strony)}
 frxGIFExport1.CropImages := False;
 {Ustaw rozdzielczość DPI}
 frxGIFExport1.Resolution := 96;
 {Ustaw, czy plik wynikowy ma być otwarty po wyeksportowaniu}
 frxGIFExport1.OpenAfterExport := False;
 {Ustaw, czy chcesz wyświetlić postęp eksportu (pokaż, która strona jest obecnie eksportowana)}
 frxGIFExport1.ShowProgress := False;
 {Ustawianie, czy ma być wyświetlane okno dialogowe filtru eksportu}
 frxGIFExport1.ShowDialog := False;
 {Ustaw nazwę wynikowego pliku.}
 {Należy pamiętać, że jeśli nazwa pliku nie zostanie ustawiona i wyłączysz okno dialogowe filtru eksportu,}
 {Okno dialogowe wyboru nazwy pliku będzie nadal wyświetlane}
 frxGIFExport1.FileName := 'C:\Output\test.gif';
 {Eksportowanie raportu}
 frxReport1.Export(frxGIFExport1);
end;

Po przeanalizowaniu, jak możemy tworzyć i eksportować do takich formatów, dochodzimy do wniosku, że jest to niezwykle proste!

Ale proszę - nie korzystaj z tych funkcji! Bardzo często (na przykład wiele programów do generowania raportów podatkowych lub formularzy 1040-SR) pozwala zapisać wynikowy plik tylko w określonym formacie zamkniętym, wysłać go do wydrukowania lub zapisać jako TIFF - niestety ta opcja nie wytrzymuje żadnej krytyki z punktu widzenia dalszego wykorzystania.

Można go podziwiać lub wydrukować. Po tym wszystkim, to nie jest dużo aby wyeksportować te dokumenty do PDF (lub, jeśli to konieczne - PDF / A), ODS, ODT, RTF, DOCX, XLSX - z pełnym wsparciem odpowiednich standardów, ale znacznie wygodniejsze będzie pracować z nimi w postaci dokumentu tekstowego.

about product pobierz zamów
avatar
Michael Philippenko
VP
Fast Reports Team: Michae Philippenko - VP at Fast Reports
VCL Lazarus FastReport 6 Delphi

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Zamów
  • Pobierz
  • Dokumentacja
  • Opinie użytkowników
  • Jak odinstalować nasze produkty
  • Ticket system
  • FAQ
  • Tutorial Video
  • Forum
  • Articles
  • Our News
  • Prasa o nas
  • Partnerzy
  • Kontakty

© 1998-2022 by Fast Reports Inc.

  • Poufność