Как я могу начать показывать чересстрочный PNG до получения всех данных?

У меня есть медленное соединение, которое мне нужно отправить PNG-изображение (как поток байтов) и немедленно отобразить изображение. У меня есть приложение c# WinForms, принимающее байт [], загружающее его в поток памяти и создающее систему.Рисунок.Объект Image / Bitmap из него.

то, что я хотел бы сделать, это отправить изображение с очень низким разрешением вниз, а затем постепенно обновить его, чтобы он становился яснее по мере получения данных. Похоже, PNG поддерживает чересстрочные изображения, которые как раз то, что мне нужно.

можно ли начать показывать PNG до того, как все данные будут получены, и постепенно сделать его более ясным, поскольку остальная часть входит? Как я могу это сделать?

1 ответов


вам нужно будет доставить байты таким образом, чтобы они соответствовали алгоритм Adam7. Возможно, сторонняя библиотека может быть Googled, которая доставляет байты таким образом, чтобы взять тяжелую работу из него.

здесь наглядный пример что он будет делать.

редактировать: LibPNG для Windows может быть началом. Конечно, его DLL потребует вашей .NET-программы для взаимодействия с неуправляемым кодом и не-MSIL сборки, и это еще одна история, которая, я уверен, размещена в другом месте на stackoverflow - или, может быть, вы могли бы создать другой вопрос для нее в частности. LibPNG-проект с открытым исходным кодом, поэтому его исходный код может дать представление об алгоритме Adam7, который может быть перекодирован в C#/.Сеть.