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;
}