Тип C# для обработки изображений

У меня есть система, которая делает скриншоты из разных систем и разными способами. Эти изображения используются разными клиентами, например. сравнение изображений, распознавание текста, отображение в графическом интерфейсе, ведение журнала и т. д.

В настоящее время я разработал свои интерфейсы для использования BitmapSource. Но это показало трудности с созданием диспетчера каждый раз, когда BitmapSource инициализировался в потоке без диспетчера. Описание проблемы

Теперь я ищу простой формат обмена изображениями, который включает в себя основную информацию об изображении. Специальные клиенты все равно будут конвертировать этот формат в свои собственные форматы (BitmapSource в графическом интерфейсе WPF, Mat в библиотеке OpenCVSharp, Pix в Tesseract OCR...)

Сейчас я склонен использовать пространство имен Bitmap из System.Drawing, но это также сложно и каким-то образом связано с Windows Forms. Но он уже имеет некоторые функции преобразования и имеет возможности загрузки и сохранения. Кроме того, сторонние библиотеки, как правило, предлагают преобразование из Bitmap в свой собственный формат.

Итак, уместно ли использовать Bitmap из System.Drawing в качестве формата обмена изображениями в библиотеках классов (работающих и инициализирующихся в потоках, отличных от потока GUI), или мне лучше создать собственную реализацию, которая несет необходимую информацию для представления изображения? Или где-то уже доступен простой независимый формат изображения?


person Creepin    schedule 08.11.2018    source источник
comment
Какие проблемы возникли у вас при использовании Bitmap для решения этой проблемы?   -  person mjwills    schedule 08.11.2018
comment
Я использую необработанные массивы цветов внутри для аналогичной цели, но, в конце концов, я раскрываю растровые изображения, я также хотел бы знать, с какими проблемами вы столкнулись при попытке использовать System.Drawing.Bitmap.   -  person Ronan Thibaudau    schedule 08.11.2018
comment
@RonanThibaudau В настоящее время я просто думаю об использовании Bitmap. Я просто хотел убедиться, что не столкнусь с похожими или другими проблемами, с которыми я столкнулся с BitmapSource. Так что Bitmap было бы моим предпочтением для изменения. Замечали ли вы какие-либо трудности с преобразованием при использовании необработанного массива цветов, поскольку вы используете фиксированный формат?   -  person Creepin    schedule 08.11.2018
comment
@Creepin Для моего случая использования я использую один фиксированный формат внутри, так что на самом деле все довольно просто, просто нужно конвертировать из него в растровое изображение и обратно всякий раз, когда мне нужно работать вне моей библиотеки.   -  person Ronan Thibaudau    schedule 08.11.2018
comment
@RonanThibaudau, а потеря конверсии является проблемой? Или цвет, который вы используете для своего массива, имеет большую глубину цвета? Итак, я имею в виду, что если ваше исходное изображение 32-битное, вы обрабатываете его как 24-битное? Учитываете ли вы альфа-канал?   -  person Creepin    schedule 08.11.2018
comment
@Creepin Я не могу говорить об этом, так как ничего из этого не используется в моей ситуации (я использую один внутренний формат и один формат растрового изображения с одним и тем же bpp для каждого, мне не нужен альфа-канал)   -  person Ronan Thibaudau    schedule 09.11.2018
comment
@RonanThibaudau Тем не менее, спасибо за ваши предложения, я попробую немного с массивом цветов, а в остальном выберу Bitmap   -  person Creepin    schedule 09.11.2018