Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Torvald от Июль 22, 2016, 17:42



Название: QGraphicsBlurEffect и косяки на границах
Отправлено: Torvald от Июль 22, 2016, 17:42
QGraphicsBlurEffect умеет довольно быстро размывать, на сколько я понял это получается в результате даунскейла изображения. И судя по всему из-за этого на границах изображение становится прозрачным или того цвета, которым был залит фон...
В общем вот код и полученное изображение.
Собственно вопрос, можно ли стандартными средствами Qt быстро размыть изображение без косяков?
Код
C++ (Qt)
inline static void fastBlur(const QImage &inImg, QImage &outImg, float radius)
{
QGraphicsBlurEffect *blur = new(std::nothrow) QGraphicsBlurEffect();
if (!blur)
{
qDebug() << "can't create QGraphicsBlurEffect";
return;
}
blur->setBlurHints(QGraphicsBlurEffect::PerformanceHint);
blur->setBlurRadius(radius);
 
QGraphicsScene scene;
QGraphicsPixmapItem item;
item.setPixmap(QPixmap::fromImage(inImg));
item.setGraphicsEffect(blur);
scene.addItem(&item);
outImg.fill(Qt::gray);
QPainter ptr(&outImg);
scene.render(&ptr);
delete blur;
}


Название: Re: QGraphicsBlurEffect и косяки на границах
Отправлено: Igors от Июль 23, 2016, 07:58
Собственно вопрос, можно ли стандартными средствами Qt быстро размыть изображение без косяков?
Если это картинка (а не контрол), то проще заблюрить самому, без всяких эффектов


Название: Re: QGraphicsBlurEffect и косяки на границах
Отправлено: Torvald от Июль 23, 2016, 11:38
Не хотелось изобретать велосипед, если он уже есть в Qt. Если нет, то ок. Но пока не ясно, есть он или нет.


Название: Re: QGraphicsBlurEffect и косяки на границах
Отправлено: Igors от Июль 23, 2016, 11:44
Не хотелось изобретать велосипед, если он уже есть в Qt. Если нет, то ок. Но пока не ясно, есть он или нет.
Понимаю, но поиски - тоже время/усилия.

Кстати в OpenGL есть приемчик чтобы блюрить быстро с любым радиусом. На этапе предрасчета для каждого пыкселя вычисляется сумма всех пыкселей пр-ка (левый верхний угол - сам пыксель).


Название: Re: QGraphicsBlurEffect и косяки на границах
Отправлено: Torvald от Июль 24, 2016, 11:30
С OpenGL все ясно, мне именно на CPU нужно. Было)
Ну да ладно, нет так нет, сам напишу


Название: Re: QGraphicsBlurEffect и косяки на границах
Отправлено: Igors от Июль 24, 2016, 13:04
С OpenGL все ясно, мне именно на CPU нужно. Было)
Никто не мешает сделать то же самое на CPU

Ну да ладно, нет так нет, сам напишу
Я не утверждал что нет, но в принципе - здоровый подход. Велик - основа прогресса.