Название: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: v1ntorez от Октябрь 05, 2010, 13:53 Всем привет!
Возникла проблема, как правильно изменять(динамически) размер картинки чтоб сохранялось ее качество. Например если есть QLable на форме и для него я ставлю setStyleSheet c border-image: то при ресайзе формы картинка внутри QLable меняеться и ее качество сохраняется. Если создать свой Widget и туда поставить QLable и сделать тоже самое картина не изменит свой размер. Если же поставить в QLable QPixmap и изменять размер картинки через QPixmap::scaled картинка ужасно меняеться(качество картинки совсем никакое ). Может кто то сталкивался с такой проблемой. Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: Kolobok от Октябрь 05, 2010, 13:59 Попробуй прочитать документацию QPixmap::scaled(...)
Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: v1ntorez от Октябрь 05, 2010, 14:05 спасибо)) ответ в пустую. в доках ничего нет. Там есть кучу флагов, но на качество оно не влияет совсем, только на размер
Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: BRE от Октябрь 05, 2010, 14:23 Что значит "... сохранялось ее качество"?
Если картинку 10x10 точек отмасштабировать до размеров 100x100 точек, то качество у нее будет соответствующее, т.е. никакое. По любому. :) Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: Igors от Октябрь 05, 2010, 14:32 На увеличение хорошо работает bicubic (исходники есть в ImageMagic). Есть ли это в Qt - не знаю. Ну и как уже сказали, масштаб должен быть разумным: напр. в 2 раза, ну в 4 (но не в 10)
Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: v1ntorez от Октябрь 05, 2010, 14:33 ) а если наоборот?? и не 100х100 а к примеру 200х200 к 100х100 то всетавно мелкие детали начинают расползаться. А при setStyleSheet они сохраняються.
Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: BRE от Октябрь 05, 2010, 14:39 ) а если наоборот?? и не 100х100 а к примеру 200х200 к 100х100 то всетавно мелкие детали начинают расползаться. А при setStyleSheet они сохраняються. В scale какой transformMode используешь?Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: v1ntorez от Октябрь 05, 2010, 14:39 Давайте так. У вас есть картинка. На картинке изображен бублик. На бублике есть цветочек(например). Вы загружаете ее в QLable через QPixmap. Начинаете менять размер. При каждом уменшение(увиличение) QLable с QPixmap меняеться. Так вот если менять это через QPixmap цветочек будет размыт.
Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: Kolobok от Октябрь 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. Ы? Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: v1ntorez от Октябрь 05, 2010, 14:43 Если к этому прибавить ешче Qt::AspectRatioMode а там их 3.
И того вариантов больше))) Название: Re: QPixmap как сохранять качество картинки после QPixmap::scaled Отправлено: Zeka13 от Май 10, 2012, 18:53 QPixmap logoScaled = logo.scaled(QSize (70,70),Qt::KeepAspectRatio, Qt::SmoothTransformation);
|