Pull to refresh

Comments 23

Скажите пожалуйста, что заставляет людей использовать System.Drawing на сервере?

Используем System.Drawing на сервере потому что конвертируем TIFF в PNG на лету. System.Drawing делает это быстрее и лучше (по поддержке форматов), чем ImageMagick.NET. ImageMagick.NET тупо выжирал весь CPU на тех же объёмах, где System.Drawing потребляет не больше 20%.
ImageSharp не умеет в TIFF и к тому же он очень баговый и ещё не вышел из беты. Да и спанчбоб довольно одиозная и непредсказуемаая личность: меняет API без всякой обратной совместимости.
Сейчас делаем попытку перейти на ImageMagick.NET но уже на Linux серверах, но пока результаты противоречивы, видимо надо больше тюнинга.
В общем, обработка картинок под .net core — это боль.
UFO just landed and posted this here
netvips раза в 3 быстрее ImageMagick.NET на конвертации TIFF в PNG. Но самое приятное, что он не выедает CPU в 100% и сервер не останавливается.
В общем, вы очень помогли.
UFO just landed and posted this here

Используем System.Drawing на сервере, потому что рисуем штрихкоды там, которые надо динамически отдавать картинкой, а библиотека их создания (ZXing.Net) имеет зависимость от System.Drawing.


По той же причине System.Drawing пришлось протащить даже в SQL Server (create assembly). Из-за интересных багов одной популярной клиентской софтины, картинки в отчётах правильно отрисовываются только если были получены напрямую из подключения к базе данных, а не по какому-то иному каналу, так что для этой софтины приходится генерировать штрихкоды в SQL Server.

Несколько лет назад принимал участие в проекте по документообороту. Приходилось рендерить страницы предпросмотра для pdf-документа в браузере.
Сейчас натолкнулся на эту статью в связи с необходимостью рисовать свои тайлы на сервере. Конечно, это другого типа задача, как раз таки связанная с рисованием, а не обработкой уже готового изображения, но подводных камней с параллельностью и блокировкой объектов GDI это не отменяет.
В NetCore оно требует libgdiplus на линуксах и маках, лишняя зависимость для вроде бы кроссплатформенного приложения.
Короче говоря — не нужно, при наличии альтернатив.

NetCore требует libicu, libgssapi-krb5-2, liblttng-ust0, libssl1.0.2 и zlib1g на линуксах, лишние зависимости для вроде бы кроссплатформенного приложения, короче говоря — не нужно, при наличии альтернатив в виде Go, который собирает бинарник вообще без зависимостей, даже без libc.


Вот примерно такого рода получилось высказывание.

Таки внезапно, но приложение с неткором и рандомным наобором пакетов у меня отлично работало на чистых win7, win10, Ubuntu 16.04 и Linux Mint 18.3, MacOS 10.13.
А стоило только добавить System.Drawing, как на всех невиндовых машинах пришлось ставить libgdiplus.
Возможно, какие то пакеты действительно требуют libicu, libgssapi-krb5-2, liblttng-ust0, libssl1.0.2 и zlib1g и те не установлены в системе — но я с таким не сталкивался.
чистых

Ubuntu 16.04

Нет такого понятия. Есть "предустановленный набор софта для конкретной десктопной либо серверной редакции". В тот же базовый образ докера с убунтой вышеперечисленные пакеты не входят.

Ок, конкретно это была десктопная редакция, т.к. тестил я там AvaloniaUI =)

С образами докера не связывался, поверю на слово.
Тут перечислены необходимые зависимости/требования для разных операционных систем. Даже для Windows может потребоваться установка дополнительных пакетов.
То чувство, когда зашел почитать что такое System.Drawing, но увы и ах.
P.S. мне одному кажется, что картинки одинаковые?
Думаю одинаковые.
Скажу как дальтоник — картинка снизу кажется мне светлее. Но это не точно
MagicScaler накидывает дополнительной резкости, из-за чего светлые объекты на темном фоне (ручейки, капли, брызги) становятся ещё светлее.
Разные варианты интерполяции или на крайняк пройтись фильтром Лапласа по изображению, и получится примерно то же самое. Нету здесь никакой магии.
мне одному кажется, что картинки одинаковые?

картинки разные: одна резче и светлее, другая более темная и размытая
в оригинальном посте был контрол, с одной картинкой, по которому можно было поводить шторку влево-вправо, чтобы сразу видеть разницу. Я пока новичок, и такого элемента на хабре не нашел
Да, действительно, вторая картинка чётче.
Sign up to leave a comment.

Articles