Я работаю с большим количеством данных монохромного изображения, и сегодня утром я заметил, что существует существенная разница между тем, как libjpeg и кодек .Net jpeg обрабатывают монохромные данные.Похоже, что монохромное изображение, сохраненное при ЛЮБОЙ настройке качества с использованием libjpeg и открытое с использованием стандартного кодека .Net jpeg, на самом деле загружается только с 16 различными оттенками серого, а все промежуточные оттенки отображаются как пунктирные.
Вот гистограмма плавного градиента, сохраненная libjpeg и загруженная .net
![Histogram of codec conflict affected gradient](https://i.stack.imgur.com/Oz6Gj.png)
Гистограмма должна быть идеально ровной.
А вот (увеличенный) пример того, как выглядит этот градиент (это должен быть совершенно плавный переход) ![enter image description here](https://i.stack.imgur.com/C6bz7.png)
Это должен быть плавный переход от серого 85 слева к серому 136 направильный, но только 4 оттенка серого фактически передается, чтобы сделать этот переход.
Мой вопрос - я сумасшедший, и если не только, насколько далеко идет это несоответствие кодека?Есть ли хороший обходной путь, если вы используете обе библиотеки в разных программах?
Я не виню ни один из кодеков, а просто указываю на несоответствие.Я заметил это с изображениями, которые, как я знал, были созданы с использованием libjpeg, предположил, что это проблема с настройкой качества, попытался использовать средство изменения размера изображения для быстрой установки и получил тот же результат, попытался использовать irfanview и снова получил тот же результат.Поскольку обе эти программы должны использовать некоторую библиотеку jpeg, я склонен полагать, что они также используют libjpeg, и существует подлинный конфликт кодеков.
На стороне загрузки я столкнулся с одним и тем же результатом, загружая изображения с обоими собственными.net код и использование Paint.net.
Наконец, вот пример с нормальным разрешением, так что вы можете скачать его и попробовать сами.Загрузка этого в некоторых программах даст вам хороший градиент (например, ваш браузер), но загрузка его с вашим собственным кодом .Net, или Paint.Net даст вам размытый градиент, подобный приведенному выше, с использованием только 16 оттенков серого.
![enter image description here](https://i.stack.imgur.com/1kSAZ.jpg)
Кто-нибудь знает больше об этом, как далеко он продвигается и какие могут быть хорошие обходные пути?