Rais Shaikh Ответов: 3

Как мы можем изменить размер изображения в C++, не теряя его качества ?


Как мы можем изменить размер изображения в c++, не теряя его качества ? Мы также можем использовать библиотеку GFL. Я попробовал использовать StretchBlt.

Что я уже пробовал:

Я попробовал использовать StretchBlt, но качество изображения теряется, из-за этого я не получаю правильное значение пикселя, я хочу правильное значение пикселя. Используя библиотеку GFL, я получаю это, но скорость слишком медленная. Кто-нибудь может помочь ?

F-ES Sitecore

Если вы хотите сделать его больше, то вы не можете сделать его больше без потери качества. Я знаю, что они делают это все время в CSI и других телешоу, но это не настоящая жизнь :)

3 Ответов

Рейтинг:
23

CPallini

[бесстыдная самореклама]
Взгляните на мою статью: Обычная библиотека C Resampling DLL[^].
[/бесстыжие сельского-продвижение]


0x01AA

5 за бесстыдное хорошее звено.

CPallini

Спасибо :-)

Рейтинг:
2

Patrice T

То, что вы ищете,-это специальная библиотека, созданная Пенелопой Гарсия (Criminal Minds) и Эбби Шуто (NCIS) (соавторами) для их эксклюзивного использования .

На самом деле его не существует. В противном случае простое изображение ночного неба с помощью смартфона превзошло бы телескопы.
Улучшение разрешения-это функциональность той же библиотеки, что и выше. :)


Рейтинг:
0

W∴ Balboos, GHB

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

Когда вы выбираете изображение для отображения, оно имеет внутреннее максимальное разрешение, которое определяется размером изображения (пиксели).

Самое лучшее, что вы можете сделать с точки зрения качества изображения, - это отобразить его в полном размере. Это редко возможно, так как, например, для 12-мегапиксельного изображения потребуется экран с разрешением 3000х4000 пикселей.

Чтобы поместить изображение на экран, вам придется показать только некоторые пиксели. Например, вы можете сжать эту картинку на экран размером 1500х2000 пикселей, отображая только каждый второй пиксель (то есть половину данных в каждом направлении, что составляет 3 МП данных). Это означает, конечно, что какая-то деталь утрачена.

На практике вы, скорее всего, будете отображать только что-то более похожее на 1 из 10 пикселей в каждом направлении (300x400) (то есть 100-ю часть данных изображения). В нем будет еще меньше деталей.

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

Итак, ответ на ваш вопрос таков: более крупное изображение должно, по крайней мере, сохранять (или даже усиливать) детали (до тех пор, пока вы не выходите за пределы размеров реального изображения). Меньшее исполнение потеряет детализацию. Данные либо отображаются ... либо нет.