Używam UIImagePNGRepresentation
do zapisywania obrazu. Obraz wynikowy ma rozmiar ponad 30 KB i jest WIELKI w moim przypadku.Jak skompresować rozmiar obrazu za pomocą UIImagePNGRepresentation - iOS?
Próbowałem użyć UIImageJPEGRepresentation
i pozwala on kompresować obraz, więc zapisuje obraz w rozmiarze < 5KB, co jest wspaniałe, ale zapisanie go w formacie JPEG daje mu białe tło, którego nie chcę (mój obraz jest okrągły, więc Muszę zapisać go z przezroczystym tłem).
Jak mogę skompresować rozmiar obrazu, używając UIImagePNGRepresentation
?
Odpowiedź jest prosta, nie można, dopóki nie zdecydujesz się na kompromis wymiar obrazu. 'UIImagePNGRepresentation' zwraca najmniejszy możliwy rozmiar skompresowanego obrazu, a ponieważ jest to metoda kompresji bezstratnej, nie może ona naruszyć jakości obrazu, w przeciwieństwie do JPEG. Tak więc jedyną możliwością jest zmniejszenie wymiaru obrazu. –
@AyanSengupta To nie jest prawda, istnieje wiele sposobów, aby obraz PNG mógł uzyskać lepszą kompresję (różne ustawienia nadmuchania, inne ustawienia, paleta), ale aby wybrać najlepszy, musielibyśmy wypróbować je wszystkie. Istnieją specjalne narzędzia do optymalizacji obrazów PNG, ale nie możemy oczekiwać, że zrobi to prosty enkoder graficzny. – Sulthan
Jeśli twój obraz nie ma wielu kolorów, możesz przejść z PNG-8 (PNG z 256 paletą kolorów), który jest zwykle mniejszy. Może być trudno zmusić UIImagePNGRepresentation do utworzenia takiego formatu, więc możesz spróbować przekonwertować 'UIImage' na dane rgb, a następnie wypróbować inny koder PNG, np. libpng. Ostatecznie wszystko zależy od tego, jaki masz obraz. – Sulthan