Изображение, изменяющее размеры производительности: система. Рисование по сравнению с системой. Windows. Медиа

Можно использовать Объекты управления SQL для выполнения этого. Это те же объекты что использование Studio управления для выполнения запросов. Я верю Server.ConnectionContext.ExecuteNonQuery(), выполнит то, в чем Вы нуждаетесь.

10
задан Chadd Nervig 16 November 2009 в 23:06
поделиться

4 ответа

И после того, как я напечатал все это, мне пришло в голову, что я могу загрузить символы из MS для классов System.Windows.Media и пройти там, где это было медленно. Сразу нашли причину и решение. Входные изображения были сохранены с цветовым профилем, и он пытался загрузить этот цветовой профиль (из файловой системы) каждого изображения. Переключившись с BitmapCreateOptions.None на BitmapCreateOptions.IgnoreColorProfile в приведенном выше коде, он больше не делает этого и работает так же быстро, как System.Drawing.

Надеюсь, это поможет любому, кто столкнется с этой проблемой!

10
ответ дан 3 December 2019 в 22:37
поделиться

Я обнаружил интересную ситуацию в вашем коде. Удалите , используя из следующей строки:

using(DrawingContext drawingContext = drawingVisual.RenderOpen())

Я не уверен, почему этот код ускорения, но вы можете попробовать.

0
ответ дан 3 December 2019 в 22:37
поделиться

Я думаю, что это может быть актуально со страницы 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 по-прежнему поддерживается, поэтому я буду придерживаться его.

0
ответ дан 3 December 2019 в 22:37
поделиться

Похоже, вы делаете это нелегко. Вы можете позволить 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 не достигли бы этой цели, поэтому мое решение не отвечает на ваш вопрос.

Я оставлю свой ответ здесь на тот случай, если кто-то, кому просто нужно изменить размер без пробелов, столкнется с этим вопросом.

5
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: