Russian Qt Forum
Ноябрь 22, 2024, 18:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPixmap как сохранять качество картинки после QPixmap::scaled  (Прочитано 9308 раз)
v1ntorez
Гость
« : Октябрь 05, 2010, 13:53 »

Всем привет!
Возникла проблема, как правильно изменять(динамически) размер картинки чтоб сохранялось ее качество.
Например если есть QLable на форме и для него я ставлю setStyleSheet c border-image: то при ресайзе формы картинка внутри QLable меняеться и ее качество сохраняется. Если создать свой Widget и туда поставить QLable и сделать тоже самое картина не изменит свой размер. Если же поставить в QLable QPixmap и изменять размер картинки через QPixmap::scaled картинка ужасно меняеться(качество картинки совсем никакое ).
Может кто то сталкивался с такой проблемой.
Записан
Kolobok
Гость
« Ответ #1 : Октябрь 05, 2010, 13:59 »

Попробуй прочитать документацию QPixmap::scaled(...)
Записан
v1ntorez
Гость
« Ответ #2 : Октябрь 05, 2010, 14:05 »

спасибо)) ответ в пустую. в доках ничего нет. Там есть кучу флагов, но на качество оно не влияет совсем, только на размер
Записан
BRE
Гость
« Ответ #3 : Октябрь 05, 2010, 14:23 »

Что значит "... сохранялось ее качество"?
Если картинку 10x10 точек отмасштабировать до размеров 100x100 точек, то качество у нее будет соответствующее, т.е. никакое. По любому.  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Октябрь 05, 2010, 14:32 »

На увеличение хорошо работает bicubic (исходники есть в ImageMagic). Есть ли это в Qt - не знаю. Ну и как уже сказали, масштаб должен быть разумным: напр. в 2 раза, ну в 4 (но не в 10)
Записан
v1ntorez
Гость
« Ответ #5 : Октябрь 05, 2010, 14:33 »

) а если наоборот?? и не 100х100 а к примеру 200х200 к 100х100 то всетавно мелкие детали начинают расползаться. А при setStyleSheet они сохраняються.
Записан
BRE
Гость
« Ответ #6 : Октябрь 05, 2010, 14:39 »

) а если наоборот?? и не 100х100 а к примеру 200х200 к 100х100 то всетавно мелкие детали начинают расползаться. А при setStyleSheet они сохраняються.
В scale какой transformMode используешь?
Записан
v1ntorez
Гость
« Ответ #7 : Октябрь 05, 2010, 14:39 »

Давайте так. У вас есть картинка. На картинке изображен бублик. На бублике есть цветочек(например). Вы загружаете ее в QLable через QPixmap. Начинаете менять размер. При каждом уменшение(увиличение) QLable с QPixmap меняеться. Так вот если менять это через QPixmap цветочек будет размыт.
Записан
Kolobok
Гость
« Ответ #8 : Октябрь 05, 2010, 14:40 »

спасибо)) ответ в пустую. в доках ничего нет. Там есть кучу флагов, но на качество оно не влияет совсем, только на размер

Вообще-то только два флага.

Код:
QPixmap QPixmap::scaled ( const QSize & size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation ) const

Цитировать
enum Qt::TransformationMode
This enum type defines whether image transformations (e.g., scaling) should be smooth or not.
Constant   Value   Description
Qt::FastTransformation         0   The transformation is performed quickly, with no smoothing.
Qt::SmoothTransformation    1   The resulting image is transformed using bilinear filtering.

Ы?
Записан
v1ntorez
Гость
« Ответ #9 : Октябрь 05, 2010, 14:43 »

Если к этому прибавить ешче Qt::AspectRatioMode а там их 3.
И того вариантов больше)))
Записан
Zeka13
Гость
« Ответ #10 : Май 10, 2012, 18:53 »

    QPixmap logoScaled = logo.scaled(QSize (70,70),Qt::KeepAspectRatio, Qt::SmoothTransformation);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.155 секунд. Запросов: 22.