Какую библиотеку обработки изображений я должен использовать - PullRequest
0 голосов
/ 07 сентября 2011

Я читал https://stackoverflow.com/questions/158756/what-is-the-best-image-manipulation-library И перепробовал несколько библиотек и сейчас ищу информацию о том, что лучше для нас. Я начну с описания наших текущих настроек и проблем.

У нас есть система, которая требует изменения размера и обрезки большого количества изображений из больших оригинальных изображений. Мы обрабатываем более 50 000 изображений каждый день на 2 мощных серверах. Сегодня мы используем ImageGlue из WebSupergoo, но нам это совсем не нравится, он работает медленно и время от времени зависает (это еще один вопрос о переполнении стека без ответа). У нас есть служба многопоточных окон, которая использует Microsoft ThreadPool для максимально возможного изменения размера на 8 основных компьютерах.

Я пробовал AForge, и он прошел очень хорошо, он загружался быстрее и никогда не падал или что-то еще. Но у меня были проблемы с качеством на нескольких изображениях. Это связано с тем, какие алгоритмы я использовал ofc, так что можно настроить. Но хочу расширить наши глаза, чтобы понять, правильный ли это путь.

так:

  • Это должен быть c # .net и запускаться в службе Windows. (Так как мы не будем менять остальную часть сервиса только для обработки изображений)
  • Он должен хорошо обращаться с резьбовой средой.
  • Нам очень нужно, чтобы он был быстрым, поскольку сегодня он слишком медленный. Но мы также хотим хорошего качества и небольшого размера файлов, поскольку изображения позже отображаются на веб-странице с большим количеством посетителей и нуждаются в хорошем качестве.

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

Какие-либо комментарии или предложения по использованию библиотеки?

1 Ответ

1 голос
/ 07 сентября 2011

Я понимаю, что вы все еще хотите использовать C #, но предлагаете альтернативу.

В зависимости от объема работы, которую вы выполняете, самый быстрый способ манипулировать изображениями - это делать это полностью на GPU (чторазгрузит большую часть работы с пикселями).Вы можете взаимодействовать с CUDA из Managed C ++, который вы можете вызвать из своего сервиса.Или используйте поверхности DirectX и цели рендеринга (у вас может быть сглаживание и все качественные вещи из коробки).

Однако, прежде чем что-либо делать, убедитесь, что в вашей рабочей нагрузке преобладают трилинейные / билинейныеизменение размера, а не путем кодирования / декодирования изображения.Кстати, для выполнения разгрузки вам понадобится как минимум одна быстрая видеокарта nVidia на каждом сервере (дешевый GTX 460 будет более чем достаточно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...