{"id":54788,"date":"2020-01-04T00:00:00","date_gmt":"2020-01-03T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/jpeg-algoritm-szhatiya"},"modified":"2020-02-18T14:02:50","modified_gmt":"2020-02-18T11:02:50","slug":"jpeg-algoritm-szhatiya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","title":{"rendered":"JPEG. Algorytm kompresji","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Witaj ponownie! Znalaz\u0142em ten artyku\u0142, napisany jeszcze w maju 2019 roku. To jest kontynuacja serii artyku\u0142\u00f3w o WAVE i JPEG, Oto <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/450774\/\">pierwsza<\/a><\/noindex>. Ta publikacja zawiera informacje o algorytmie kodowania obraz\u00f3w i o samym formacie w og\u00f3le.<\/p>\n<p><\/p>\n<h3 id=\"schepotku-istorii\">Szczypta historii<\/h3>\n<p><\/p>\n<p>\u0141y\u017cka sto\u0142owa artyku\u0142u z Wikipedii:<\/p>\n<p><\/p>\n<blockquote><p>JPEG (Joint Photographic Experts Group) to jeden z popularnych format\u00f3w grafiki rastrowej, stosowany do przechowywania zdj\u0119\u0107 i podobnych obraz\u00f3w.<\/p><\/blockquote>\n<p>Standard ten zosta\u0142 opracowany przez Zjednoczon\u0105 Grup\u0119 Ekspert\u00f3w ds. Fotografii ju\u017c w 1991 roku w celu efektywnego kompresowania obraz\u00f3w.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"kakoy-put-prohodyat-izobrazheniya-ot-syrogo-vida-do-jpeg\">Jak obrazy przekszta\u0142caj\u0105 si\u0119 z surowego formatu do JPEG<\/h3>\n<p><\/p>\n<p>Niekt\u00f3rzy uwa\u017caj\u0105, \u017ce obrazy JPEG to skompresowane dane surowe metod\u0105 Huffmana, ale to nieprawda. Przed kontrolnym kompresowaniem dane przechodz\u0105 d\u0142ug\u0105 drog\u0119.<\/p>\n<p><\/p>\n<p>Najpierw model kolor\u00f3w zmienia si\u0119 z RGB na YCbCr. W tym celu istnieje specjalny algorytm \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/YCbCr#%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_ITU-R_BT.601\">tutaj<\/a><\/noindex>. Y nie dotykamy, poniewa\u017c odpowiada za jasno\u015b\u0107, a jego zmiana b\u0119dzie zauwa\u017calna.<\/p>\n<p><\/p>\n<p>Pierwsze, co robi\u0105 z obrazem \u2014 to <strong>\u201epr\u00f3bkowanie\u201d<\/strong> (subsampling). Rozumie si\u0119 to \u0142atwo: bierze si\u0119 macierz 2x2 pikseli, nast\u0119pnie bior\u0105 si\u0119 warto\u015bci Cb i Cr \u2014 \u015brednie warto\u015bci ka\u017cdego z komponent\u00f3w YCbCr tych 4 pikseli. I tak, <em>zaoszcz\u0119dzili\u015bmy 6 bajt\u00f3w<\/em>, zamiast 4 Y, 4 Cb, 4 Cr otrzymujemy 4 Y i te same dla ka\u017cdego z nich Cb i Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 \u2014 6 = 6). W skali nawet 2x2 kompresja z utrat\u0105 danych z wsp\u00f3\u0142czynnikiem kompresji 2:1 brzmi solidnie. Dotyczy to ca\u0142ego obrazu. I tak \u2014 zredukowali\u015bmy po\u0142ow\u0119 rozmiaru. A ten zabieg mo\u017cemy wykorzysta\u0107 dzi\u0119ki naszemu postrzeganiu kolor\u00f3w. Cz\u0142owiek \u0142atwo zauwa\u017cy r\u00f3\u017cnic\u0119 w jasno\u015bci, ale nie w kolorze, je\u015bli zosta\u0142 u\u015bredniony w ma\u0142ym bloku pikseli. R\u00f3wnie\u017c pr\u00f3bkowanie mo\u017ce by\u0107 wykonywane w lini\u0119, 4 piksele w poziomie i pionie. Pierwsza opcja jest stosowana cz\u0119\u015bciej. Je\u015bli jako\u015b\u0107 obrazu jest wa\u017cna, pr\u00f3bkowanie w og\u00f3le si\u0119 nie wykonuje.<br \/>\nIlustracja pr\u00f3bkowania (Habr nie pozwoli\u0142 wklei\u0107 gif-a) \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/i.ibb.co\/Rg5Th9H\/150953010617579181.gif\">https:\/\/i.ibb.co\/Rg5Th9H\/150953010617579181.gif<\/a><\/noindex><\/p>\n<p><\/p>\n<h5 id=\"osnovnaya-chast-podgotovki\">G\u0142\u00f3wna cz\u0119\u015b\u0107 przygotowa\u0144<\/h5>\n<p>\nDCT<\/p>\n<p>Teraz najtrudniejsza i najwa\u017cniejsza cz\u0119\u015b\u0107. Ca\u0142y obraz dzieli si\u0119 na bloki 8x8 (u\u017cywaj\u0105 wype\u0142nienia, je\u015bli rozdzielczo\u015b\u0107 nie jest wielokrotno\u015bci\u0105 boku bloku).<\/p>\n<p><\/p>\n<p>Teraz do ka\u017cdego bloku stosuje si\u0119 <strong>DCT (dyskretne przekszta\u0142cenie kosinusowe)<\/strong>. W tej cz\u0119\u015bci obrazu usuwane s\u0105 wszystkie zb\u0119dne elementy. U\u017cywaj\u0105c DCT nale\u017cy zrozumie\u0107, czy ten blok (8&#215;8) opisuje jak\u0105\u015b monotonn\u0105 cz\u0119\u015b\u0107 obrazu: niebo, \u015bcian\u0119; czy zawiera z\u0142o\u017con\u0105 struktur\u0119 (w\u0142osy, symbole itp.). Logicznym jest, \u017ce 64 podobnych kolorystycznie pikseli mo\u017cna opisa\u0107 jednym, poniewa\u017c rozmiar bloku jest ju\u017c znany. Oto macie kompresj\u0119: 64 do 1.<\/p>\n<p><\/p>\n<p>DCT przekszta\u0142ca blok w spektrum, i tam, gdzie warto\u015bci zmieniaj\u0105 si\u0119 gwa\u0142townie, wsp\u00f3\u0142czynnik staje si\u0119 dodatni, przy czym im ostrzejsze przej\u015bcie, tym wy\u017cszy b\u0119dzie wynik. Tam, gdzie wsp\u00f3\u0142czynnik jest wy\u017cszy, na obrazku przedstawione s\u0105 wyra\u017ane przej\u015bcia w kolorze i jasno\u015bci, gdzie jest ni\u017cszy \u2014 s\u0142abe (p\u0142ynne) zmiany warto\u015bci komponent\u00f3w YCbCr w bloku.<\/p>\n<p>\nKwantowanie<\/p>\n<p>Tu ju\u017c stosowane s\u0105 ustawienia kompresji. Ka\u017cdy z wsp\u00f3\u0142czynnik\u00f3w w ka\u017cdej z macierzy 8&#215;8 dzielony jest przez okre\u015blon\u0105 liczb\u0119. Je\u015bli jako\u015b\u0107 obrazu po wszystkich modyfikacjach nie b\u0119dzie ju\u017c ograniczana, to dzielnik powinien by\u0107 r\u00f3wny jedno\u015bci. Je\u015bli bardziej zale\u017cy wam na pami\u0119ci, kt\u00f3r\u0105 zajmuje to zdj\u0119cie, to dzielnik b\u0119dzie wi\u0119kszy ni\u017c 1, a iloraz zaokr\u0105gli si\u0119. Okazuje si\u0119, \u017ce po zaokr\u0105gleniu cz\u0119sto wychodzi wiele zer.<\/p>\n<p><\/p>\n<p>Kwantowanie wykonuje si\u0119 w celu stworzenia mo\u017cliwo\u015bci dalszej kompresji. Oto jak to wygl\u0105da na przyk\u0142adzie kwantowania wykresu y = sin(x):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"JPEG. Algorytm kompresji\" src=\"\/wp-content\/uploads\/2020\/01\/ab6c205c62133785b19b5f42db109fa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nKompresja<\/p>\n<p>Najpierw przechodzimy przez macierz w zyg-zaku:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"JPEG. Algorytm kompresji\" src=\"\/wp-content\/uploads\/2020\/01\/576a5e65431d38742efe42ead0e3863b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Otrzymujemy jednowymiarow\u0105 tablic\u0119 z liczbami. Widzimy, \u017ce jest w niej wiele zer, kt\u00f3re mo\u017cna usun\u0105\u0107. W tym celu zamiast sekwencji wielu zer wpisujemy 1 zero i po nim liczb\u0119 oznaczaj\u0105c\u0105 ich ilo\u015b\u0107 w sekwencji. W ten spos\u00f3b mo\u017cna zredukowa\u0107 do 1\/3 rozmiaru ca\u0142ej tablicy. A nast\u0119pnie po prostu kompresuje t\u0119 tablic\u0119 metod\u0105 Huffmana i zapisujemy ju\u017c w samym pliku.<\/p>\n<p><\/p>\n<h3 id=\"gde-ispolzuetsya\">Gdzie to jest u\u017cywane<\/h3>\n<p><\/p>\n<p>Wsz\u0119dzie. Tak jak PNG, JPEG u\u017cywany jest w aparatach fotograficznych, systemach operacyjnych (jako logotypy firm, ikony aplikacji, miniatury) i we wszystkich mo\u017cliwych dziedzinach, gdzie trzeba efektywnie przechowywa\u0107 obrazy.<\/p>\n<p><\/p>\n<h3 id=\"vyvod\">Wnioski<\/h3>\n<p><\/p>\n<p>Obecnie wiedza o JPEG jest cenna jedynie w celach edukacyjnych, poniewa\u017c jest ju\u017c wsz\u0119dzie wbudowana i zoptymalizowana przez du\u017c\u0105 grup\u0119 ludzi, ale granit nauki jest wci\u0105\u017c apetyczny.<\/p>\n<p>\n\u0179r\u00f3d\u0142a<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/YCbCr\">Artyku\u0142 o YCbCr na Wikipedii<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/JPEG\">Artyku\u0142 o JPEG na Wikipedii<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/pikabu.ru\/story\/kak_ustroen_format_jpeg_5452388\">Troch\u0119 o DCT z posta Pikabu<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D1%81%D0%B8%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">Artyku\u0142 o DCT na Wikipedii<\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482728\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f. \u042d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e \u0441\u0430\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c. \u0429\u0435\u043f\u043e\u0442\u043a\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0421\u0442\u043e\u043b\u043e\u0432\u0443\u044e \u043b\u043e\u0436\u043a\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438: JPEG (Joint Photographic Experts Group) \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54788","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47JPEG. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47JPEG. Algorytm kompresji | ProHoster","description":"Witaj ponownie! Znalaz\u0142em ten artyku\u0142 napisany w maju 2019 roku. To kontynuacja serii artyku\u0142\u00f3w o WAVE i JPEG. Oto pierwszy.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47JPEG. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f | ProHoster","og:description":"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-03T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54788","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 12:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:01:54","updated":"2026-01-24 12:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/54788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=54788"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/54788\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=54788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=54788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=54788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}