Качественное масштабирование

241
28 сентября 2017, 11:52

Подскажите, какие существуют способы качественного масштабирования изображений с текстом.

Пробовал так:

            using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(imageBitmap)) {
            graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
            graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            graphics.DrawImage(imageBitmap, 0, 0, width, height);
        }
        ImgBox.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            imageBitmap.GetHbitmap(), IntPtr.Zero,
            Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

Использовал Emgu CV:

        Image<Bgr, Byte> captureImage = new Image<Bgr, byte>(imageBitmap);
        Image<Bgr, byte> resizedImage = captureImage.Resize(width, height, Emgu.CV.CvEnum.Inter.Area);
        ImgBox.Source = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
            resizedImage.ToBitmap().GetHbitmap(),
            IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());

Выводил так:

<Image x:Name="ImgBox" Width=".." Height=".." SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="Fant"/>

Но результата это нужного не даёт :(

Текст, если он есть на картинках, по-прежнему размывается или сильно рябит.

Для примера как мне нужно, приведу алгоритм TeamViewer. Исходное изображение:

Результат масштабирования:

Добавлю ещё вот какую тему: что если я имею не Bitmap, а ID3D11Texture2D? Как тут качественно "смаштабировать" без преобразований в другие типы (например, в тот же Bitmap)?

READ ALSO
Как сделать привязку DataGridView к ComboBox?

Как сделать привязку DataGridView к ComboBox?

Есть datagridview и combobox их источники List-ы, мне нужно чтобы когда выбирали один элемент из combobox, то datagridview показывал элементы связанные с элементом...

359
Аномальный VS и оповещения windows 10

Аномальный VS и оповещения windows 10

Пытаюсь сделать всплывающие оповещения на windows 10Сперва VS просто отказался компилировать код, при этом никаких ошибок он графически не выделил

232
Unity 2D простое AI врага

Unity 2D простое AI врага

Нужно сделать, чтобы если координата x врага не равнялась координате x игрока, то враг передвигался в его сторонуВ начале кажется что работает,...

1027
Модальное окно не блокирует доступ к родительскому

Модальное окно не блокирует доступ к родительскому

Есть два окна, родительское и модальное с авторизацией (допустим)В родительском код:

339