OpenImageIO – otwarta biblioteka programistyczna przeznaczona do przetwarzania plików graficznych zapisanych w różnych formatach, rozpowszechniana wraz z kilkoma programami demonstrującymi jej użycie. Obsługa formatów zrealizowana jest za pomocą wtyczek. Obecnie biblioteka dostępna jest na platformy Windows, Linux oraz OS X. Całość rozpowszechniana jest na zmodyfikowanej licencji BSD.
Historia
Pierwowzorem biblioteki było ImageIO – API będące częścią rozwijanej przez nVidię aplikacji do renderingu – Gelato. Pracę nad ImageIO rozpoczęto w 2002 roku, wtedy też jego specyfikacja oraz pliki nagłówkowe zostały udostępnione na licencji BSD, zamknięta została natomiast implementacja. Rozwój ImageIO trwał do roku 2007, kiedy projekt Gelato został zawieszony. Po jego zawieszeniu Larry Gritz postanowił wykorzystać udostępnione pliki nagłówkowe do stworzenia otwartej implementacji API, tak powstał projekt OpenImageIO.
W kwietniu 2009 roku OpenImageIO został zaakceptowany do programu Google Summer of Code, w którym otrzymał cztery miejsca dla studentów[1]. W ramach stypendium studenci przeportowali bibliotekę na systemy z rodziny Windows, rozwinęli przeglądarkę plików graficznych IV oraz dodali interfejs umożliwiający wykorzystanie klas biblioteki w języku Python[2].
We wrześniu 2009 roku miała premiera filmu Klopsiki i inne zjawiska pogodowe w którym biblioteka został wykorzystana do generowania tekstur dla animacji[3][4]
W 2010 i 2011 roku projekt został ponownie zaakceptowany do programu Google Summer of Code i (dwukrotnie) dostał trzy miejsca dla studentów[5].
Ogólna budowa
Biblioteka zbudowana jest z kilku podstawowych klas. Należą do nich:
- ImageInput oraz ImageOutput stanowiące interfejs wtyczek, dzięki którym programista wykorzystujący bibliotekę nie musi znać szczegółów implementacji używanych formatów.
- ImageBuf odpowiedzialna za przechowywanie obrazów w pamięci; klasa ta wykorzystuje interfejs klas ImageInput oraz ImageOutput do operacji na obrazach.
- ImageCache zarządzająca pamięcią podręczną w taki sposób, że biblioteka może operować na dużej ilości danych wykorzystując niewielką ilość pamięci.
Oprogramowanie
Wraz z biblioteką dostarczone są programy demonstrujące jej możliwości:
- iconvert – aplikacja konwertująca plik z jednego formatu graficznego do innego. W ramach konwersji istnieje możliwość nie tylko zmiany formatu pliku, ale także formatu danych przechowywanych przez ten plik (np. konwersja danych w formacje zmiennoprzecinkowym na format całkowity 8-bitowy)
- idiff – aplikacja porównująca dwa pliki graficzne, informująca jak bardzo się różnią oraz tworząca trzeci plik będący wynikiem porównania
- igrep – aplikacja przeszukująca metadane podanego pliku w celu znalezienia zadanego wzorca.
- iinfo – aplikacja wyświetlająca informacje (wysokość, szerokość, format, metadane) o podanym pliku graficznym.
- iv – przeglądarka plików graficznych
- maketx – generator mipmap
Ponieważ wszystkie powyżej opisane programy korzystają z biblioteki OpenImageIO, potrafią wykonywać zadane operacje na dowolnym formacie obsługiwanym przez bibliotekę.
Biblioteka obsługuje formaty OpenEXR, HDR/RGBE, TIFF, JPEG/JFIF, JPEG 2000, PNG, Targa, BMP, ICO, FITS, Softimage PIC, DDS, SGI.
Zobacz też
Przypisy
Linki zewnętrzne