Plik SVG jest dwuwymiarowym obrazem wektorowym opartym na dokumentach w formacie XML. Format SVG służy nie tylko do opisu dwuwymiarowej grafiki wektorowej, ale także do mieszanych obrazów wektorowo-rastrowych.
Podajmy główne zalety formatu SVG:
Przede wszystkim, jak wspomniano w ostatnim artykule, grafika wektorowa jest skalowana w górę lub w dół bez utraty jakości (a po powiększeniu obraz nie zamienia się w sztukę kubizmu).
Po drugie, SVG jest w pełni kompatybilny z technologiami sieciowymi i dlatego będzie integralną częścią każdej strony internetowej.
Po trzecie, dodając Javascript do obiektów, możemy sprawić, że obraz będzie interaktywnym, czyli reagować na pewne działania użytkownika z podanymi odpowiedziami – w odniesieniu do obrazu i jego formy.
Po czwarte, pliki SVG są uważane za tekst, dzięki czemu można zoptymalizować plik pod SEO bez zewnętrznych metatagów bezpośrednio dodając słowa kluczowe do kodu obrazu.
Ten format ma też pewne wady:
- Rozmiar pliku gwałtownie wzrośnie, jak lawina podczas zwiększania szczegółów obrazów. Jednak w przypadku obrazów z dużą ilością szczegółów najlepiej jest używać formatów PNG lub JPG. Niestety, SVG całkowicie nie nadaje się do realistycznych zdjęć w wysokiej rozdzielczości i szczegółowych map obszaru.
- SVG nie jest obsługiwany przez starsze przeglądarki (Internet Explorer 8 i starsze), ale nie sądzę, jest to wielka wada.
- Domyślnie (na przykład WordPress), nie pozwala na przesyłanie plików SVG, ze względu na problemy z bezpieczeństwem. WordPress postrzega to rozszerzenie jako coś złośliwego i dlatego blokuje je. Ale można ominąć ten blok za pomocą wtyczek.
- SVG nadaje się do tworzenia prostych obiektów, które mogą być opisane przez proste figury lub ich części.
- Należy również wspomnieć, że sieci społecznościowe, takie jak Facebook i Twitter, nie obsługują formatu SVG. Jeśli używasz plików SVG jako miniatur, będziesz musiał użyć wtyczki i ustawić PNG lub JPG dla metatagów.
Sprawdziliśmy główne zalety i wady formatu SVG i teraz możemy powrócić do głównego tematu tego artykułu.
Jak zapisać plik SVG za pomocą Delphi lub Lazarus?
Najpierw musisz stworzyć obraz!
A potem mogę polecić FastReport VCL, ponieważ za jego pomocą można zapisać natychmiast w pożądanym formacie z Delphi. W końcu może być wiele obiektów do wyświetlenia oprócz zdjęć. Jest to wygodne – więc dlaczego nie? Od kodów kreskowych po tabele i mapy — zdecydowanie zaleca się zapisywanie ich w formacie wektorowym!
Dlatego zacznijmy!
Tworzenie raportu. Podgląd przed zapisaniem, coś Tobie nie podoba? Zmieniono, edytowano! Teraz, po tym, jak stworzyliśmy to, co było wymagane, uruchom go i zobacz, co się stało.
Odwołaj się do podglądu i wybierz format, którego potrzebujemy. Oto on – poniżej!
Zaznacz i kliknij przycisk.
Teraz widzimy okno z wieloma różnymi ustawieniami. Skonfiguruj wszystko, czego potrzebujesz i kliknij OK!
Krótko o ustawieniach eksportu
Widać, że podczas zapisywania w formacie SVG ustawienia nie są takie same z BMP, JPEG, TIFF lub GIF.
Dokładniej, takie funkcje jak:
Style – zapisywanie stylów;
Ujednolicone obrazy – ujednolicenie zdjęć;
Sformatowany – zapisywanie formatowania;
Zdjęcia – zapisywanie dokumentu ze zdjęciami – jest to właściwy wybór dla tych obrazów, które były już pikselowe podczas dodawania do naszego dokumentu;
Multi Page – zapisywanie wielu stron;
Nawigator stron – tworzenie nawigatora stron;
Zapisywanie obrazów w formatach PNG, EMF, BMP i JPEG.
A ustawienia formatów BMP, JPEG, TIFF, GIF to:
Monochromatyczne – obrazy w odcieniach czerni;
Przycinanie stron — czy strony są przycinane;
Jakość JPEG – ustawienie jakości obiektu graficznego;
Wynik (dip) – rozdzielczość.
Oczywiście obraz wektorowy zostanie zrasteryzowany po zapisaniu w formatach rastrowych, ale odwrotnie (rastrowe do wektora) nie nastąpi.
Jedyne, co wydaje się wpólne dla wszystkich tych formatów, to ustawienia akcji, możliwość zapisania i automatycznego otwarcia dokumentu natychmiast po zapisaniu.
Zastanawiając się, jak zapisać za pomocą okna podglądu, przejdźmy do zapisywania bez podglądu.
Zapisywanie plików SVG za pomocą kodu Delphi / C++Builder / Lazarus
Eksport do SVG | |
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 31 32 33 34 35 36 |
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} frxSVGExport1.PageNumbers := '2-3'; {Ustaw, czy chcesz eksportować style obiektów} frxSVGExport1.EmbeddedCSS := True; {Ustaw, czy chcesz przekonwertować wszystkie obrazy zgodnie z pictureformat:} {Jeśli obraz w raporcie jest w formacie BMP, a PictureFormat to PNG, bmp zostanie zapisany w formacie PNG} frxSVGExport1.UnifiedPictures := True; {Ustaw, czy tekst źródłowy SVG ma być formatujący (zwiększa rozmiar wynikowego pliku)} frxSVGExport1.Formatted := False; {Ustaw, czy mają być eksportowane obrazy} frxSVGExport1.EmbeddedPictures := True; {Ustaw, czy chcesz wyeksportować każdą stronę do oddzielnego pliku SVG} frxSVGExport1.Multipage := False; {Ustawianie, czy przyciski nawigacyjne mają być dodane do wynikowego pliku SVG} frxSVGExport1.Navigation := False; {Ustaw, w jakim formacie chcesz eksportować obrazy} // używa frxExportHelpers; // TfrxPictureFormat = (pfPNG, {$IFNDEF FPC}pfEMF,{$ENDIF} pfBMP, pfJPG);) frxSVGExport1.PictureFormat := pfPNG; {Ustaw, czy plik wynikowy ma być otwarty po wyeksportowaniu} frxSVGExport1.OpenAfterExport := False; {Ustaw, czy chcesz wyświetlić postęp eksportu (pokaż, która strona jest obecnie eksportowana)} frxSVGExport1.ShowProgress := False; {Ustawianie, czy ma być wyświetlane okno dialogowe filtru eksportu} frxSVGExport1.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} frxSVGExport1.FileName := 'C:\Output\test.svg'; {Eksportowanie raportu} frxReport1.Export(frxSVGExport1); end; |
Porównajmy wyniki eksportowania obiektów rastrowych i wektorowych!
Poniżej przedstawię przykłady JPEG i SVG.
JPEG
i... tutaj od razu widać różnicę. Czy widzisz ją? :)
Cóż, na przykład obraz rastrowy ma większy rozmiar niż obraz wektorowy, a podczas skalowania zmniejsza się jasność. Ale jeśli chodzi o obraz wektorowy (SVG), podczas skalowania, jasność pozostaje taka sama, a rozmiar pliku jest znacznie mniejszy. Jedyną wadą jest to, że SVG nie nadaje się do realistycznych zdjęć (ale i tak ich nie mamy).
Podsumujmy! Format wektorowy SVG jest bardzo wygodny (jeśli używasz go we właściwym miejscu), a zapisywanie za pośrednictwem FastReport VCL sprawia, że jest to łatwiejsze.