Czy mogę przekonwertować bitmapę na PNG w pamięci (tzn. Bez zapisywania do pliku) za pomocą tylko zestawu SDK platformy? (tzn. brak libpng itp.).Konwertuj mapę bitową na PNG w pamięci w C++ (win32)
Chcę również móc zdefiniować przezroczysty kolor (nie kanał alfa) dla tego obrazu.
Rozwiązanie GdiPlus wydaje się być ograniczone do obrazów o szerokości podzielnej przez 4. Wszystko inne zawiedzie podczas wywołania Save(). Czy ktokolwiek zna przyczynę tego ograniczenia i jak/mogę go obejść?
Aktualizacja: Bounty
Zaczynam bounty (naprawdę chcę to do pracy). Zaimplementowałem rozwiązanie GDI +, ale, jak powiedziałem, jest ono ograniczone do obrazów o szerokości czterech kwadratów. Nagroda trafi do każdego, kto rozwiąże problem z tą szerokością (bez zmiany wymiarów obrazu) lub zaoferuje alternatywne rozwiązanie inne niż GDI +, które działa.
na dobry początek, znalazłem przykład, aby zapisać bitmapę jako png z gdi +: http://dotnet-snippets.de/dns/gdi-speichern-eines-png-SID814.aspx może to przydatne –
To rozwiązanie działa dla mnie, nawet przy obrazach, których szerokość nie jest podzielna przez 4. Jestem w systemie Windows Vista i korzystam z Visual C++ 2008. –
Dlaczego nie chcesz używać biblioteki libpng? Ma bardzo permisywną licencję. –