Можно использовать Объекты управления SQL для выполнения этого. Это те же объекты что использование Studio управления для выполнения запросов. Я верю Server.ConnectionContext.ExecuteNonQuery()
, выполнит то, в чем Вы нуждаетесь.
И после того, как я напечатал все это, мне пришло в голову, что я могу загрузить символы из MS для классов System.Windows.Media и пройти там, где это было медленно. Сразу нашли причину и решение. Входные изображения были сохранены с цветовым профилем, и он пытался загрузить этот цветовой профиль (из файловой системы) каждого изображения. Переключившись с BitmapCreateOptions.None на BitmapCreateOptions.IgnoreColorProfile в приведенном выше коде, он больше не делает этого и работает так же быстро, как System.Drawing.
Надеюсь, это поможет любому, кто столкнется с этой проблемой!
Я обнаружил интересную ситуацию в вашем коде. Удалите , используя
из следующей строки:
using(DrawingContext drawingContext = drawingVisual.RenderOpen())
Я не уверен, почему этот код ускорения, но вы можете попробовать.
Я думаю, что это может быть актуально со страницы System.Drawing
в MSDN:
Пространство имен System.Drawing обеспечивает доступ к основным графическим функциям GDI +. Более продвинутые функции предоставляются в пространствах имен System.Drawing.Drawing2D, System.Drawing.Imaging и System.Drawing.Text. Класс Graphics предоставляет методы для рисования на устройстве отображения. Такие классы, как Rectangle и Point, инкапсулируют примитивы GDI +. Класс Pen используется для рисования линий и кривых, в то время как классы, производные от абстрактного класса Brush, используются для заполнения внутренней части фигур.
Используя System.Drawing
, вы приближаетесь к реальной базовой графике. функциональность, чем при использовании System.Windows.Media
, который:
Определяет объекты, которые позволяют интегрировать мультимедийные материалы, включая рисунки, текст и аудио / видео контент, в приложения Windows Presentation Foundation (WPF).
System.Drawing
по-прежнему поддерживается, поэтому я буду придерживаться его.
Похоже, вы делаете это нелегко. Вы можете позволить WPF сделать всю работу за вас, просто установив DecodePixelHeight и DecodePixelWidth. Это приведет к изменению размера во время загрузки изображения:
BitmapImage resizedImage = new BitmapImage
{
StreamSource = new MemoryStream(imageData),
CreateOptions = BitmapCreateOptions.IgnoreColorProfile,
DecodePixelHeight = height,
DecodePixelWidth = width,
}
resizedImage.BeginInit(); // Needed only so we can call EndInit()
resizedImage.EndInit(); // This does the actual loading and resizing
imageSaveImageData(resizedImage, outputFile);
Я также включил решение IgnoreColorProfile, которое вы нашли в моем коде.
Обновление Я перечитал ваш вопрос и понял, что вы используете DrawingVisual, потому что вы Чтобы изображение получилось квадратным, вокруг изображения должны быть пробелы. DecodePixelHeight и DecodePixelWidth не достигли бы этой цели, поэтому мое решение не отвечает на ваш вопрос.
Я оставлю свой ответ здесь на тот случай, если кто-то, кому просто нужно изменить размер без пробелов, столкнется с этим вопросом.