2010-12-16 14 views
5

Używam xlib.Zapisywanie Xlib XImage do PNG

Mam strukturę XImage wypełnioną informacjami z wywołania XGetImage(). Czy istnieje popularna metoda przechodzenia z XImage na coś bardziej znaczącego ... mianowicie PNG?

Spojrzałem na libpng, ale słyszałem od prawie wszystkich, że to bestia do oswajania. Czy nadal będzie to zalecana ścieżka?

+0

http://stackoverflow.com/questions/4462958/writing-bitmap-to-string-insted-of-file-or-ximage-to-png –

Odpowiedz

4

Zobacz także How to save XImage as bitmap?, chociaż ta osoba miała ograniczenie, że nie może korzystać z biblioteki.

Jeśli możesz korzystać z biblioteki, Kair jest dobrym, który zrobi to za Ciebie. Ma zapis PNG zajmujący się libpng dla ciebie i ma kod, aby uzyskać piksele z X. Jednak może to utrudnić uzyskanie pikseli z XImage; będzie chciał je pobrać z okna lub pixmapy. Jeśli możesz po prostu zastąpić XGetImage() cairo, to może działać dobrze. Sposób, by robić rzeczy z grubsza w Kairze moim zdaniem jest:

Można również skorzystać z powierzchni xlib jako źródła do narysuj na powierzchni obrazu, a następnie wykonaj inne czynności z powierzchnią obrazu (skalowanie lub malowanie na nim lub cokolwiek innego), jeśli chcesz, przed zapisaniem jako PNG.

Jeśli używasz dowolnego zestawu narzędzi interfejsu użytkownika, prawdopodobnie ma on również kod, np. GTK + ma gdk_pixbuf_get_from_drawable() itp.

+0

dzięki! Widziałem to stanowisko, ale nie miałem pojęcia, jak wypróbować inną bibliotekę, co byłoby popularnym zadaniem. Kair wygląda jak idealna odpowiedź – digitalfoo