OpenImageIO

Z Wikipedii, wolnej encyklopedii
OpenImageIO
Autor OpenImageIO.org
Pierwsze wydanie 31 maja 2009
Aktualna wersja stabilna 2.0.12 – 1 listopada 2019; ponad 4 lata temu
Platforma sprzętowa wieloplatformowa
System operacyjny wieloplatformowa
Rodzaj biblioteka
Licencja BSD (zmodyfikowana)
Strona internetowa

OpenImageIOotwarta 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[edytuj | edytuj kod]

Pierwowzorem biblioteki było ImageIOAPI będące częścią rozwijanej przez nVidię aplikacji do renderinguGelato. 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[edytuj | edytuj kod]

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[edytuj | edytuj kod]

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ę.

Obsługiwane formaty[edytuj | edytuj kod]

Biblioteka obsługuje formaty OpenEXR, HDR/RGBE, TIFF, JPEG/JFIF, JPEG 2000, PNG, Targa, BMP, ICO, FITS, Softimage PIC, DDS, SGI.

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]