У меня есть веб-приложение, где пользователи могут загружать изображения. Текущая проблема, с которой я сталкиваюсь, состоит в том, что загружаемые изображения сохраняются в базе данных в исходном формате. Это вызывает много проблем с производительностью, когда изображения используются на веб-странице. Я использовал dotTrace для профилирования приложения и вижу значительные проблемы при обработке изображений из базы данных.
У меня есть идея изменить размер изображения при его загрузке на сервер. Возьмите следующий пример, который я хочу, чтобы приложение делало, когда пользователь загружает новое изображение:
- Пользователь загружает изображение
- Размер изображения изменяется до 7,500 x 7,500 в пикселях с разрешением 72 т / д
- Изображение сохраняется в базе данных
- Оригинальный файл удаляется
Единственное сохраненное изображение - это упомянутое выше, и веб-приложение содержит технологию, позволяющую изменить его размер на лету.
Я уже прочитал несколько тем здесь на SO. И большинство из них указывают мне в сторону ImageMagick. Этот инструмент уже знаком в моей компании и используется в проектах PHP. Но есть ли хорошие и стабильные релизы C # для этого инструмента? Я уже нашел инструменты ниже, но они либо в бета-версии, альфа-версии или в настоящее время не обновлены.
ImageMagick.NET
Приложение ImageMagick
Я также нашел эту тему на SO. В этом разделе представлен следующий пример кода:
private static Image CreateReducedImage(Image imgOrig, Size newSize)
{
var newBm = new Bitmap(newSize.Width, newSize.Height);
using (var newGrapics = Graphics.FromImage(newBm))
{
newGrapics.CompositingQuality = CompositingQuality.HighSpeed;
newGrapics.SmoothingMode = SmoothingMode.HighSpeed;
newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic;
newGrapics.DrawImage(imgOrig, new Rectangle(0, 0, newSize.Width, newSize.Height));
}
return newBm;
}
Короче вопросы, которые у меня есть;
- Есть ли какие-либо преимущества в отношении производительности при использовании приведенного выше примера?
- Есть ли хорошая и надежная оболочка C # для ImageMagick, которую я могу использовать для этого?
Любые другие полезные советы, касающиеся исполнения, приветствуются!