Trochę bawiłem się bitmapami z Androidem i przekonałem się, że kompresja PNG zajmuje znacznie więcej czasu niż najwyższej jakości JPEG. O wiele wiele więcej. Na moim urządzeniu może to być z grubsza do 10 sekund w stosunku do 1.Dlaczego kompresja PNG jest znacznie wolniejsza niż JPEG na Androida?
AFAIK, PNG to w zasadzie filtrowane ciągi pikseli skompresowanych za pomocą deflate. Cóż, znalezienie najlepszego filtra dla każdego ciągu może być czasochłonnym zadaniem, ale może być ustalony kompromis pomiędzy skutecznością szybkości i kompresji. Nie powinno to być wolniejsze niż JPEG. Jak to możliwe?
Może jest na odwrót. Czy jest trochę ultraszybkiej implementacji JPEG na Androida?
UPDATE: I naprawdę tylko zrobić takie rzeczy jak
mBitmap.compress(CompressFormat.JPEG, 100, stream);
i
mBitmap.compress(CompressFormat.PNG, 100, stream);
Powinieneś umieścić kod, aby pokazać, jak kompresujesz. –
JPEG można przyspieszać sprzętowo, PNG jest zawsze wykonywane w oprogramowaniu. JPEG zajmuje stały czas do przetworzenia. 90 +% czasu kodowania i dekodowania PNG spędza w kodeka flidowym. Filtrowanie zajmuje mało czasu. Deflowanie na najwyższym poziomie jakości zajmuje dużo czasu, ponieważ próbuje wielu metod, aby uzyskać najlepszą kompresję. – BitBank
W rzeczywistości Skia obsługuje akcelerację sprzętową JPEG. Powinienem wtedy sprawdzić mój kod na emulatorze. Jeśli luka wydajności obniży się, to musi być to. – akalenuk