Co to jest format pliku ANI?
Plik .ani to animowany kursor systemu Windows - animowany odpowiednik statycznego pliku .cur. Opracowany przez Microsoft i wprowadzony wraz z systemem Windows 95 w 1995 roku, przechowuje sekwencję klatek kursora, które system operacyjny przełącza cyklicznie jako animację wskaźnika myszy. Klasycznym przykładem jest obracająca się klepsydra wyświetlana podczas przetwarzania zadania przez system Windows.
Wewnętrznie .ani wykorzystuje format kontenera RIFF - tę samą rodzinę kontenerów binarnych co dźwięk .wav i wideo .avi. Plik otwiera się czterema bajtami RIFF pod offsetem 0, rozmiarem pliku w formacie little-endian pod offsetem 4 oraz typem formy ACON (ANImated CONtent) pod offsetem 8. Blok anih zawiera nagłówek animacji, przechowujący liczbę klatek, liczbę kroków i domyślną częstotliwość wyświetlania. Opcjonalne bloki rate i seq umożliwiają ustawienie czasu dla poszczególnych klatek (w jednostkach jiffies wynoszących 1/60 sekundy) oraz niesekwencyjną kolejność odtwarzania. Same obrazy kursora znajdują się w bloku LIST składającym się z podbloków icon, z których każdy jest kompletną klatką kursora zgodną z formatem .ico, zawierającą współrzędne punktu aktywnego (hotspot).
Każda klatka obsługuje głębię kolorów od 1-bitowej monochromatycznej do 32-bitowej RGBA z 8-bitowym kanałem alfa, co pozwala na uzyskanie gładkich, antyaliasingowych krawędzi wskaźnika. Wymiary klatek to zazwyczaj 32×32 lub 48×48 pikseli, z obsługą do 256×256 dla wyświetlaczy o wysokiej rozdzielczości DPI. Na poziomie kontenera nie stosuje się kompresji. Format jest wyłączny dla systemu Windows i pozostaje strukturalnie niezmieniony od połowy lat 90. Aby zastosować niestandardowy wskaźnik .ani, otwórz ustawienia wskaźnika myszy w Panelu sterowania systemu Windows.
Bezpieczeństwo
RYZYKO: MEDIUMWiększość plików .ani to nieszkodliwe animowane wskaźniki, ale format ten ma istotną historię związaną z bezpieczeństwem: błąd przetwarzania nagłówka ANI w systemie Windows (nagłówek „anih”) był wykorzystywany (MS05-002 w 2005 r. i MS07-017/CVE-2007-0038 w 2007 r.) do zdalnego wykonywania kodu poprzez samo załadowanie złośliwego kursora. Te konkretne błędy zostały dawno naprawione, ale lekcja pozostaje aktualna - instaluj pakiety kursorów tylko z zaufanych źródeł i dbaj o aktualizacje systemu Windows. Kursor z niezaufanego archiwum ZIP stanowi niskie, ale niezerowe ryzyko w niezałatanych systemach.
Szczegóły formatu
w pigułceProgramy otwierające pliki ANI
Szczegóły techniczne
specyfikacja| Format kontenera | RIFF (Resource Interchange File Format) z typem formy ACON (ANImated CONtent) |
| Magiczne bajty | 0x52 0x49 0x46 0x46 („RIFF”) pod offsetem 0; „ACON” pod offsetem 8 |
| Kolejność bajtów | Little-endian w całym pliku |
| Blok nagłówka animacji | Blok „anih” przechowuje liczbę klatek, liczbę kroków, domyślną częstotliwość wyświetlania, szerokość/wysokość klatki, liczbę bitów i flagi |
| Czas trwania klatki | Opcjonalny blok „rate”: jeden DWORD na krok mierzony w jiffies (każdy po 1/60 sekundy); w przypadku braku powraca do częstotliwości z nagłówka anih |
| Sekwencjonowanie klatek | Opcjonalny blok „seq” pozwala na niesekwencyjną lub powtarzalną kolejność odtwarzania klatek, niezależną od kolejności zapisu |
| Struktura przechowywania klatek | Blok LIST zawierający podbloki „icon”; każdy podblok zawiera kompletny obraz kursora w formacie CUR/ICO |
| Głębia kolorów na klatkę | 1, 4, 8, 24 lub 32 bity na piksel; 32 bpp zawiera 8-bitowy kanał alfa dla gładkich krawędzi antyaliasingowych |
| Punkt aktywny (Hotspot) | Każda klatka zawiera współrzędne punktu aktywnego (x, y) oznaczające piksel, który rejestruje kliknięcie |
| Wymiary klatek | Zazwyczaj 32x32 lub 48x48 px; obsługiwane do 256x256 px dla wyświetlaczy o wysokim DPI |
| Kompresja | Brak na poziomie kontenera RIFF; poszczególne klatki są przechowywane jako nieskompresowane mapy bitowe CUR/ICO oparte na BMP |
| Typowy rozmiar pliku | Od 5 KB do 200 KB w zależności od liczby klatek i głębi kolorów |
| Typ MIME | application/x-navi-animation; rozpoznawany również jako image/x-ani |
| Obsługa platform | Natywnie tylko Windows; używany bezpośrednio przez podsystem kursorów Windows; brak wbudowanej obsługi w macOS lub Linux |
| Wydano | 1995 (Windows 95 - animated mouse pointers) |
| Najnowsza wersja | Stable since the 1990s; format unchanged |
| Specyfikacja | learn.microsoft.com |