Создание изображения с высоким разрешением - PullRequest
1 голос
/ 04 августа 2010

У меня есть изображение (png) с разрешением 1600 * 1200 (96 точек на дюйм).

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

Это мой первый опыт программирования с изображениями / графикой, поэтому любая информация будетбыть великим (то есть ссылки на чтение, концепции для понимания и т. д.)

JD.

1 Ответ

1 голос
/ 04 августа 2010

Я никогда раньше не использовал эти элементы управления, но вам может понадобиться переопределить алгоритм масштабирования (если это вообще возможно, я не знаю). Если у вас есть текст на изображении и вы не используете векторные изображения (SVG, EMF, WMF и т. Д.), Любое растяжение будет размытым.

Другой алгоритм масштабирования, если это возможно, может решить, как растянуть пиксели. Для текста вы ищете что-то под названием «Nearest Neighbor» или, возможно, даже «Bi-cubic» интерполяция, когда изображение изменяется. Эти методы являются более дорогими с точки зрения обработки, поэтому вы можете не получить такого же плавного масштабирования, как при использовании алгоритма интерполяции по умолчанию (каким бы он ни был).

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

http://social.expression.microsoft.com/Forums/en-US/deepzoomcomposer/thread/dee528a2-06ae-4426-b096-5baafec499ff

http://weblogs.asp.net/bleroy/archive/2009/12/10/resizing-images-from-the-server-using-wpf-wic-instead-of-gdi.aspx

В последнем посте они ссылаются на различные алгоритмы интерполяции в перечислении BitmapScalingMode. Одним из таких вариантов является NearestNeighbor. Есть также несколько примеров изображений с измененным размером.

Обновление:

В этой статье автор рассматривает способ изменения качества плиток изображения, которые использует элемент управления Deep Zoom (и он использует Silverlight!). Автор эффективно меняет способ создания изображений с помощью нескольких строк кода в своем проекте:

if (bSmoothScaling)
{
  g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
  g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
  g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
}

В этом списке назначений вы можете найти режим интерполяции, о котором я упоминал, а также некоторые другие вещи, о которых я не знал. Автор упоминает о значительном влиянии на производительность, когда все установлено на «Высокое качество».

Надеюсь, вы сможете взять концепцию и как-нибудь включить ее в Silverlight. Удачи!

...