Tôi có thể chuyển đổi một bitmap để PNG trong bộ nhớ (nghĩa là không phải bằng văn bản cho một tập tin) chỉ sử dụng nền tảng SDK? (ví dụ: không có libpng, v.v.).Chuyển đổi bitmap để PNG trong bộ nhớ trong C++ (win32)
Tôi cũng muốn để có thể xác định một màu trong suốt (không phải alpha kênh) cho hình ảnh này.
Giải pháp GdiPlus dường như bị giới hạn ở hình ảnh có chiều rộng chia hết cho 4. Bất cứ điều gì khác không thành công trong suốt cuộc gọi đến Save(). Có ai biết lý do cho hạn chế này và làm thế nào/cho dù tôi có thể làm việc xung quanh nó?
Cập nhật: Bounty
tôi bắt đầu một bounty (Tôi thực sự muốn điều này để làm việc). Tôi đã triển khai giải pháp GDI +, nhưng như tôi đã nói, nó chỉ giới hạn ở hình ảnh có chiều rộng quad. Tiền thưởng sẽ chuyển đến bất kỳ ai có thể giải quyết vấn đề chiều rộng này (không thay đổi kích thước hình ảnh) hoặc có thể cung cấp giải pháp thay thế không phải GDI + hoạt động.
để giúp bạn bắt đầu, tôi đã tìm thấy ví dụ để lưu bitmap như png với gdi +: http://dotnet-snippets.de/dns/gdi-speichern-eines-png-SID814.aspx có thể hữu ích –
Giải pháp này làm việc cho tôi, ngay cả với hình ảnh mà chiều rộng không chia hết cho 4. Tôi đang sử dụng Windows Vista và sử dụng Visual C++ 2008. –
Tại sao bạn không muốn sử dụng libpng? Nó có một giấy phép rất dễ dãi. –