.NET: замена ImageMagick на WPF-объекты - PullRequest
2 голосов
/ 10 декабря 2008

Мы все видели крутые демонстрационные приложения WPF с мультимедиа.

У меня вопрос , если WPF-объекты могут заменить некоторые основные функции в ImageMagick . Основные функции, такие как изменение размера изображений, обрезка и т. Д.

Результаты изменения размера пространства имен System.Graphics в .NET 2.0 просто печальны (GDI +). Может быть, я использую это неправильно, но из коробки это, кажется,.

Кроме того, неплохо было бы сделать так, чтобы API-интерфейсы для WPF были немного острее, чем API-интерфейсы ImageMagick .NET.

Обновление : Я думал, что WPF может иметь объект для манипуляции с изображениями . Как GDI имеет System.Drawing.Image и System.Drawing.Bitmap. Но я надеялся, что объект WPF будет более производительным и лучше по качеству, например, с изменением размера изображения.

Ответы [ 5 ]

4 голосов
/ 10 декабря 2008

WPF и GDI + - это графические системы, разработанные специально для графического интерфейса, они не являются библиотеками для работы с изображениями.

WPF намного лучше, чем GDI +, но все же это система с графическим интерфейсом - такие вещи, как получение одинакового результата на другом оборудовании (как беспокоит IgorK), просто не являются приоритетом, а качество изменения размеров менее важно, чем производительность - в противном случае не будет использоваться как часть конвейера рендеринга.

Итак, если вы используете ImageMagick для базовой обработки перед отображением изображения, WPF может работать для вас (но я уверен, что у него гораздо меньше возможностей, чем у ImageMagick), если вам нужна высококачественная обработка изображений, тогда WPF - просто неправильный инструмент для работы.

WPF - отличная система с графическим интерфейсом (лучшая, с которой я когда-либо работал), но это не графическая система общего назначения и не библиотека для работы с изображениями.

1 голос
/ 20 октября 2009

Как в WPF, так и в GDI + имеется множество типов ошибок при загрузке и обработке изображений. Я сообщаю Microsoft о некоторых ошибках, и Microsoft исправила эти ошибки сейчас ... но только в FW4.0 и Windows7. В других ОС (WinXP, Vista, Win2000) и FW2.0 эти ошибки не будут исправлены в любое время.

- Извините за плохой английский: (* ​​1003 *

1 голос
/ 03 апреля 2009

Вы можете просто использовать простое старое пространство имен System.Drawing-name. Просто используйте правильные объекты, методы и параметры, и измененные изображения не будут отстойными.

http://weblogs.asp.net/gunnarpeipman/archive/2009/04/02/resizing-images-without-loss-of-quality.aspx

1 голос
/ 10 декабря 2008

Найден этот блог с чем-то похожим на вашу ситуацию.

Я немного обеспокоен тем, что WPF будет использовать аппаратный рендеринг, если он доступен. Это может стать проблемой, если вам нужны идентичные результаты (не просто похожие похожие) на другом оборудовании, например.

Вы можете делать очень интересные вещи, такие как применение шейдеров HLSL в WPF, но это все еще выглядит для меня как особый (и потенциально проблемный) способ обработки изображений, по крайней мере, сейчас. Может быть, когда-нибудь станет легко использовать WPF во многих других областях, но сейчас я бы остановился на более предсказуемых :) Конечно, приятно знать, что WPF активно развивается, и в проекте есть люди, которые делали GDI + (см. это ), но это очень свежая технология - использовать ее «новыми способами» для серьезных проектов. В любом случае, я был бы рад узнать, если вам удастся сделать подход WPF подходящим для вас, мне кажется, это очень интересная идея:)

1 голос
/ 10 декабря 2008

Я не знаю о WPF, но вы могли бы использовать GDI + - здесь есть вступление:

...