Mam aplikację, która wyświetla kilka obrazów w formie pokazu slajdów. Te obrazy będą częścią pakietu, więc będą dystrybuowane wraz z aplikacją.
Wszystkie obrazy są fotograficzne lub fotograficzne itp.
Czytałem, że lepiej jest używać PNG jako formatu obrazu, ale widząc, że wersja JPG będzie znacznie mniejsza, wolałbym tego użyć.
Czy są jakieś wskazówki, jakiego formatu użyć iw jakim przypadku?
Odpowiedzi:
Pliki PNG są doskonałe co do piksela (bez strat) i wymagają bardzo niewielkiej dodatkowej energii procesora do wyświetlania. Jednak odczytanie dużych plików PNG z pamięci może zająć więcej czasu niż bardziej skompresowanych formatów obrazów, a zatem ich wyświetlanie jest wolniejsze.
JPG są mniejsze do przechowywania, ale stratne (ilość zależy od poziomu kompresji), a ich wyświetlenie wymaga znacznie bardziej skomplikowanego algorytmu dekodowania. Ale typowa kompresja i jakość obrazu są zwykle wystarczające dla zdjęć.
Użyj JPG do zdjęć i do wszystkiego, co duże, a PNG do wszystkiego, co małe i / lub zaprojektowane do wyświetlania „w pikselach” (np. Małe ikony) lub jako część złożonej przezroczystej nakładki itp.
źródło
Apple optymalizuje obrazy PNG zawarte w pakiecie aplikacji na iPhone'a. W rzeczywistości iPhone używa specjalnego kodowania, w którym bajty kolorów są zoptymalizowane pod kątem sprzętu. XCode obsługuje to specjalne kodowanie podczas tworzenia projektu. Widzisz więc dodatkowe korzyści z używania PNG na iPhonie, inne niż ich rozmiar. Z tego powodu zdecydowanie zaleca się używanie PNG do wszelkich obrazów, które pojawiają się jako część interfejsu (w widoku tabeli, etykietach itp.).
Jeśli chodzi o wyświetlanie obrazu pełnoekranowego, takiego jak fotografia, nadal możesz czerpać korzyści z plików PNG, ponieważ są one bezstratne, a jakość wizualna powinna być lepsza niż w przypadku JPG, nie wspominając o zużyciu zasobów podczas dekodowania obrazu. Może być konieczne obniżenie jakości plików JPG, aby uzyskać rzeczywistą korzyść w rozmiarze pliku, ale wtedy wyświetlasz nieoptymalne obrazy.
Rozmiar pliku z pewnością ma znaczenie, ale przy wyborze formatu obrazu należy wziąć pod uwagę również inne kwestie.
źródło
W przypadku plików PNG należy pomyśleć o jednej ważnej rzeczy. Jeśli plik PNG jest dołączony do kompilacji Xcode, zostanie zoptymalizowany dla systemu iOS. Nazywa się to zgniataniem PNG. Jeśli plik PNG zostanie pobrany w czasie wykonywania, nie zostanie zniszczony. Zniszczone pliki PNG działają mniej więcej tak samo, jak 100% plików JPG. Pliki JPG niższej jakości działają lepiej niż pliki JPG o wyższej jakości. Więc z punktu widzenia wydajności od najszybszego do najwolniejszego JPG będzie niskiej jakości, wysokiej jakości JPG, zmiażdżony PNG, PNG.
Jeśli chcesz pobrać pliki PNG, powinieneś rozważyć zmiażdżenie plików PNG na serwerze przed pobraniem.
http://www.cocoanetics.com/2011/10/avoiding-image-decompression-sickness/
źródło
W Cocoanetics blogu opublikował piękny wzorzec wydajności iOS z JPG na różnych poziomach jakości i PNG, zi bez kruszenia.
Z jego wniosku:
źródło
Pomyślałem, że udostępnię trochę danych dotyczących wydajności dekompresji ...
Robię prototypy przeglądarki 360 stopni - karuzeli, w której użytkownik może przeglądać serię zdjęć wykonanych pod różnymi kątami, aby sprawiać wrażenie, jakby mógł płynnie obracać obiekt.
Załadowałem dane obrazu do tablicy NSData, aby wyjąć plik I / O z równania, ale utworzyć NSImage w locie. Testowanie przy niemal maksymalnej liczbie klatek na sekundę (~ 25 fps) i oglądanie w Instrumentach Widzę, że aplikacja jest wyraźnie związana z procesorem i występuje około 10% wzrost obciążenia procesora, pokazując ~ 275 kb png w porównaniu z ~ 75 kb jpg.
Nie mogę powiedzieć na pewno, ale przypuszczam, że limit procesora wynika tylko z ogólnego wykonywania programu i przenoszenia wszystkich danych w pamięci, ale dekompresja obrazu odbywa się na GPU. Tak czy inaczej, argument wydajności JPG vs. PNG wydaje się faworyzować JPG, zwłaszcza gdy brane są pod uwagę mniejsze rozmiary plików (a zatem mniejsze rozmiary obiektów w pamięci przynajmniej w niektórych częściach łańcucha).
Oczywiście każda sytuacja jest inna, nic nie zastąpi testów ...
źródło
Znalazłem ogromne różnice w wydajności animacji podczas korzystania z plików JPEG i PNG. Na przykład umieszczenie trzech plików JPEG wielkości ekranu obok siebie w UIScrollView i przewijanie w poziomie na telefonie iPhone4 powoduje opóźnienie i nieprzyjemną, gwałtowną animację. W przypadku nieprzezroczystych plików PNG o tych samych wymiarach przewijanie jest płynne. Nigdy nie używam jpegów, nawet jeśli obraz jest duży.
źródło
Myślę, że jeśli chcesz użyć przezroczystości, nie masz wyboru poza PNG. Ale jeśli twoje tło jest już nieprzezroczyste, możesz użyć JPG. To jedyna różnica, jaką widzę
źródło
„Użyj formatu JPEG do zdjęć”, jak wspomniano w Wytycznych dotyczących interfejsu użytkownika w sekcji Tworzenie grafiki w odpowiednim formacie.
źródło