.NET Core - как работать с картинками?
От: Kolesiki  
Дата: 03.10.19 17:04
Оценка: 2 (1) -1
Вот MS тянет всех за уши в свои Коры, но как там можно работать, если там тонны недоделок? ГУЙ — вообще мёртвая тема, но у меня проблема "поменьше" — всего лишь какая-то графика, которую MS умудрилась так закорячить, что она стала... зависимой от Windows(!!!) (я про System.Drawing) Как соотносятся рисование на картинке, сохранение в разных форматах и Венда — ума не приложу. И ведь у меня не какая-то случайно вылезшая экзотика! Все знают про ASP.NET? Вот-вот, а это первое место, где народу нужны графические средства для вывода в браузере картинок.

После такого предисловия, крайне простой вопрос: что в .NET Core есть стандартного, позволяющего все распространённые манипуляции с картинками? (загрузка, конверсия в др. формат, bit-depth, resize, пиксели, рисование...)

Конечно же, я сперва прогуглил ситуацию, но все хором говорят, что... нет ничего в Core! Берите сторонние либы и на свой страх и риск пилите приложения.
Потом наткнулся на свежие сообщения, что дескать по многочисленным стонам программеров, микрософт додумалась наконец запилить "безвиндусовую" графику в виде порта System.Drawing (называется "System.Drawing.Common"). Но это НЕ стандарт, а доп. нюгетина, которую никто не мешает "забыть", не фиксить баги месяцами и т.п. Другими словами, без обязательств поддерживать либу как стандарт, такому "портированию" грош цена.

Вам не кажется, что даже напрягая пупки и раздувая щёки, микрософт всё ещё не научилась правильно проектировать платформу, вектор развития, главные фичи и т.п.? Как-то уж очень дилетантски выглядят их потуги (особ. по сравнению с сетевыми кликушами, обещающими рай в Core). Я пока что ничего надёжного/солидного в Core не вижу. Ну не парсеры же строк мы там пишем! Если кто-то осмеливается говорить про Core как платформу, то это ОЧЕНЬ серьёзная заява, подразумевающая не менее десятка сложных, объёмных модулей, которые обязаны быть реализованы. Что там делать сейчас, когда спотыкаешья на каждой примитивной задаче — я нинай. Пока что MS выкатила поделие уровня Java времён её анонса под апплеты — вот "хелловорлд", вот "сортировка"... а собсно и всё! По-моему, этим танцорам надо ещё МИНИМУМ года два чтобы В ПОЛНОЙ ТИШИНЕ, без рекламы и тупых зазываний на платформу, пилить в поте лица это Core и только потом заявлять — "вот, межплатформенная фигня, там всё есть — юзайте!".

Разочарован как обычно. (
Re: .NET Core - как работать с картинками?
От: Евгений Акиньшин grapholite.com
Дата: 03.10.19 17:12
Оценка: +2
Здравствуйте, Kolesiki, Вы писали:


K>После такого предисловия, крайне простой вопрос: что в .NET Core есть стандартного, позволяющего все распространённые манипуляции с картинками? (загрузка, конверсия в др. формат, bit-depth, resize, пиксели, рисование...)


skiasharp
Не шалю, никого не трогаю, починяю примус Diagrams Designer for iPad and Windows 10
Re[2]: .NET Core - как работать с картинками?
От: vl690001x2  
Дата: 03.10.19 17:50
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:


ЕА>skiasharp


Тоже в свое время остановил выбор на нем.
Но там есть нюанс, надо качнуть либу, которая через nuget не ставится, а либа эта платформозависимая. Но вообще это просто один файл, уже забыл как он назывался. Но помню пару часов я убил на то чтобы понять почему ничего не работает на убунту, но работает под виндой.
Re: .NET Core - как работать с картинками?
От: Степанов Андрей  
Дата: 03.10.19 18:12
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>После такого предисловия, крайне простой вопрос: что в .NET Core есть стандартного, позволяющего все распространённые манипуляции с картинками? (загрузка, конверсия в др. формат, bit-depth, resize, пиксели, рисование...)


https://www.hanselman.com/blog/HowDoYouUseSystemDrawingInNETCore.aspx — не то?
Re: .NET Core - как работать с картинками?
От: Ночной Смотрящий Россия  
Дата: 03.10.19 19:41
Оценка: +5
Здравствуйте, Kolesiki, Вы писали:

K>Вот MS тянет всех за уши в свои Коры, но как там можно работать, если там тонны недоделок? ГУЙ — вообще мёртвая тема, но у меня проблема "поменьше" — всего лишь какая-то графика, которую MS умудрилась так закорячить, что она стала... зависимой от Windows(!!!) (я про System.Drawing)


С рождения было известно что это обертка вокруг GDI+. Странно что ты только что это узнал.

K>После такого предисловия, крайне простой вопрос: что в .NET Core есть стандартного, позволяющего все распространённые манипуляции с картинками? (загрузка, конверсия в др. формат, bit-depth, resize, пиксели, рисование...)


Если тебе полный аналог старого апи — https://www.nuget.org/packages/System.Drawing.Common. Если нужно чисто managed решение — https://github.com/SixLabors/ImageSharp . Если самое быстрое и отлаженное — оберка вокруг гуглового Skia https://github.com/mono/SkiaSharp/.
Понятие стандартного в Core стало несколько более размытым, так как он куда больше полагается на сторонние библиотеки.

K>Но это НЕ стандарт, а доп. нюгетина


Кор целиком состоит из "доп. нюгетин", включая весь CoreFX.

K>Разочарован как обычно. (


Сваливай уже с дотнета, чего ныть то над своими тараканами зря?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: .NET Core - как работать с картинками?
От: okon  
Дата: 04.10.19 10:56
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>Вот MS тянет всех за уши в свои Коры, но как там можно работать, если там тонны недоделок? ГУЙ — вообще мёртвая тема, но у меня проблема "поменьше" — всего лишь какая-то графика, которую MS умудрилась так закорячить, что она стала... зависимой от Windows(!!!) (я про System.Drawing) Как соотносятся рисование на картинке, сохранение в разных форматах и Венда — ума не приложу. И ведь у меня не какая-то случайно вылезшая экзотика! Все знают про ASP.NET? Вот-вот, а это первое место, где народу нужны графические средства для вывода в браузере картинок.


Я так понимаю ты про то что хочешь загрузить картинку, нарисовать на ней что-то и отправить в браузер или другое ?
Библиотека для рисования могу понять как стала платформозависимой, из-за тог что в ней надо не только линии и кружки рисовать а этот гребанный DrawText, где нужно работать с фонтами, которые достаточно сложны особенно TTF и порой платформозависимы, например на маках свои шрифты.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[2]: .NET Core - как работать с картинками?
От: Ночной Смотрящий Россия  
Дата: 04.10.19 11:38
Оценка:
Здравствуйте, okon, Вы писали:

O>Библиотека для рисования могу понять как стала платформозависимой,


Она не стала, она изначально была таковой.

O> из-за тог что в ней надо не только линии и кружки рисовать а этот гребанный DrawText, где нужно работать с фонтами, которые достаточно сложны особенно TTF и порой платформозависимы, например на маках свои шрифты.


Нет, не из-за этого. В WPF же свой рендерер шрифтов сделали. Причина была в другом — GDI+ на момент начала работ над первой версией дотнета уже была, да и перфоманс первого CLR на таких задачах был существенно хуже, при том что даже написанный на С++ GDI+ ощутимо подтормаживал.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[3]: .NET Core - как работать с картинками?
От: okon  
Дата: 04.10.19 11:46
Оценка:
O>> из-за тог что в ней надо не только линии и кружки рисовать а этот гребанный DrawText, где нужно работать с фонтами, которые достаточно сложны особенно TTF и порой платформозависимы, например на маках свои шрифты.

НС>Нет, не из-за этого. В WPF же свой рендерер шрифтов сделали.


Сделали но какими усилиями и он до сих пор не соотвествует тому как эти шрифты рисуются системой. В том же WPF не сделали рендер шрифтов для мака например.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[4]: .NET Core - как работать с картинками?
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 04.10.19 13:31
Оценка:
Здравствуйте, okon, Вы писали:

O>В том же WPF не сделали рендер шрифтов для мака например.

А что WPF уже есть для мака?
Я как-то пропустил.
Re[5]: .NET Core - как работать с картинками?
От: okon  
Дата: 04.10.19 13:37
Оценка:
Здравствуйте, Михаил Романов, Вы писали:

МР>Здравствуйте, okon, Вы писали:


O>>В том же WPF не сделали рендер шрифтов для мака например.

МР>А что WPF уже есть для мака?
МР>Я как-то пропустил.

Нет конечно, я про то что WPF заточен на шрифты Windows, и даже эта задача не простая.
Поэтому использование встроенных системных средств для работы со шрифтами выглядит логичной ( добавление зависимость от платформы )
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[2]: .NET Core - как работать с картинками?
От: Kolesiki  
Дата: 06.10.19 06:52
Оценка:
Здравствуйте, Евгений Акиньшин, Вы писали:

ЕА>skiasharp


Увы, неверный ответ. Это не стандарт. Даже хуже — это обёртка над гугловским поделием.
Re[2]: .NET Core - как работать с картинками?
От: Kolesiki  
Дата: 06.10.19 06:56
Оценка:
Здравствуйте, Степанов Андрей, Вы писали:

СА>https://www.hanselman.com/blog/HowDoYouUseSystemDrawingInNETCore.aspx — не то?


Для домашних, некритичных поделий — то. Для интыпрайза — категорическое нет. Я прямо в первом же сообщении это упомянул:

Но это НЕ стандарт, а доп. нюгетина, которую никто не мешает "забыть"


Плюс, простое кухонное соображение: если они действительно портировали всё, что ранее было завязано на GDI+, то что мешало включить это в стандарт? А если не включили, значит мы работаем в режиме "бег сквозь ночной лес закрытыми глазами".
Re[2]: .NET Core - как работать с картинками?
От: Kolesiki  
Дата: 06.10.19 07:12
Оценка: -2
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Kolesiki, Вы писали:

K>> всего лишь какая-то графика, которую MS умудрилась так закорячить, что она стала... зависимой от Windows(!!!) (я про System.Drawing)

НС>С рождения было известно что это обертка вокруг GDI+. Странно что ты только что это узнал.


Возможно, я это узнал даже раньше тебя, но т.к. работал в мире Windows only, как-то даже не обращал внимания на то, что графика напрочь приколочена к ОС-специфичной граф.подсистеме. Примерно как соображали MS прогеры 80-ых: "если ОС, то унутре у ней окошки".
Собсно, твой уровень мышления я понял, но попробую объяснить кое-что уровнем повыше: если в ОС есть функция "вывести пиксель", то это ВООБЩЕ НИКАК не должно влиять на библиотеку, предназначенную для графики "независимой платформы" (а иначе для чего было изобретать MSIL??). Напомню: мир HTML/CGI (конкретно у меня — ещё под FreeBSD) уже во весь рост использовал "server side rendering" картинок для вывода капчей, счётчиков, баннеров и т.п. Ну то есть анжанеры мелкософта шли по уже протоптаной тысячами прогеров дороге — здесь просто нельзя было сделать что-то "не так".

НС>Если тебе полный аналог старого апи — https://www.nuget.org/packages/System.Drawing.Common.


Ну я же уже объяснил прямо в первом сообщении — НЕТ. Это не продакшн код, это просто "сторонний порт".

НС>Если нужно чисто managed решение — https://github.com/SixLabors/ImageSharp


Гуглить я тоже умею. Опять же — энтузазистская библиотека, не для серьёзного продакшена. (так, чисто из опыта: ребята в 21 веке до сих пор не умеют bit-depth)

НС> Если самое быстрое и отлаженное — оберка вокруг гуглового Skia https://github.com/mono/SkiaSharp/.


Тоже видел, но это гугл. И сторонний нюгет. Завтра MS придумает треугольные пиксели и ты остаёшься в 21 веке со всеми своими зависимостями.

НС>Понятие стандартного в Core стало несколько более размытым, так как он куда больше полагается на сторонние библиотеки.


эээ... человек из мира ДотНЕТ никогда не слышал про .NET Standard??

НС>Кор целиком состоит из "доп. нюгетин", включая весь CoreFX.


Если это не ".NET Standard" — этого "не существует". Напоминаю: интыпрайз не может состоять из энтузазистской лабуды.
К слову, даже Mono, будь она тысячекратно лучше или интереснее, до сих пор не является стандартным, поддерживаемым проектом. MS деликатно обходит стороной его поддержку или вообще какое-либо отношение к себе, просто тыкая в Mono "а вот смотрите, вот где-то там, не у нас в Редмонде, есть поделие, которым можно пущщать ваши .NET проги". Всё. Извините, с такой "никакой" "крышей" я Моно даже палочкой тыкать не буду.

K>>Разочарован как обычно. (


НС>Сваливай уже с дотнета, чего ныть то над своими тараканами зря?


Чё сразу ныть? Т.е. как инженер ты поговорить не в состоянии? Ну, тогда да — продолжай свою мантру "в дотнете всё хорошо".
Re[2]: .NET Core - как работать с картинками?
От: Kolesiki  
Дата: 06.10.19 07:16
Оценка:
Здравствуйте, okon, Вы писали:

O>Я так понимаю ты про то что хочешь загрузить картинку, нарисовать на ней что-то и отправить в браузер или другое ?


Да, почти полная аналогия. "картиночная" графика на безГУЁвом сервере.

O>Библиотека для рисования могу понять как стала платформозависимой, из-за тог что в ней надо не только линии и кружки рисовать а этот гребанный DrawText, где нужно работать с фонтами


Не вижу никакой причины не делать платформнонезависимый API. Шрифт — это вообще понятие из ИЗДАТЕЛЬСТВА. Шрифт, кегль, интерлиньяж, всё это НИКОГДА не было зависимым от ОС. Соотв просто пилится продуманный API, где все ОС-специфичные детали спрятаны под капот.
Re[3]: .NET Core - как работать с картинками?
От: Ночной Смотрящий Россия  
Дата: 06.10.19 10:55
Оценка: +1 -1
Здравствуйте, Kolesiki, Вы писали:

K>Возможно, я это узнал даже раньше тебя


Оно и видно.

K>Собсно, твой уровень мышления я понял


О, сразу же переход на личности.

K>, но попробую объяснить кое-что уровнем повыше: если в ОС есть функция "вывести пиксель", то это ВООБЩЕ НИКАК не должно влиять на библиотеку


ОС тут не причем, причем готовая библиотека, написанная на С++.

НС>>Если тебе полный аналог старого апи — https://www.nuget.org/packages/System.Drawing.Common.

K>Ну я же уже объяснил прямо в первом сообщении — НЕТ. Это не продакшн код, это просто "сторонний порт".

А я тебе ответил, что это твои персональные тараканы.

НС>>Понятие стандартного в Core стало несколько более размытым, так как он куда больше полагается на сторонние библиотеки.

K>эээ... человек из мира ДотНЕТ никогда не слышал про .NET Standard??

Это тут никаким боком.

НС>>Сваливай уже с дотнета, чего ныть то над своими тараканами зря?

K>Чё сразу ныть? Т.е. как инженер ты поговорить не в состоянии?

С тобой, обсирающим собеседника в первом же предложении? Нет.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[4]: .NET Core - как работать с картинками?
От: AlexRK  
Дата: 07.10.19 08:22
Оценка: -1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>О, сразу же переход на личности.


Оффтоп, но переход на личности начал именно ты:

Странно что ты только что это узнал

чего ныть то над своими тараканами зря


НС>>>Сваливай уже с дотнета, чего ныть то над своими тараканами зря?

K>>Чё сразу ныть? Т.е. как инженер ты поговорить не в состоянии?
НС>С тобой, обсирающим собеседника в первом же предложении? Нет.

Это ты начал обсирать собеседника в первом же ответе. Получил в ответ той же монетой и обиделся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.