Convierta bitmap a PNG en memoria en C ++ (win32)

¿Puedo convertir un mapa de bits a PNG en la memoria (es decir, sin escribir en un archivo) usando solo Platform SDK? (es decir, sin libpng, etc.).

También quiero poder definir un color transparente (no canal alfa) para esta imagen.

La solución GdiPlus parece estar limitada a imágenes de ancho divisible por 4. Cualquier otra cosa falla durante la llamada a Save (). ¿Alguien sabe el motivo de esta limitación y cómo / si puedo solucionarlo?

Actualización: recompensa

Estoy comenzando una recompensa (realmente quiero que esto funcione). Implementé la solución GDI +, pero como dije, se limita a imágenes con un ancho cuádruple. La recompensa se destinará a cualquiera que pueda resolver este problema de ancho (sin cambiar las dimensiones de la imagen), o puede ofrecer una solución alternativa que no sea GDI + que funcione.

Respuestas a la pregunta(8)

Su respuesta a la pregunta