QT4 Wie blur QPixmap Bild?
QT4, Wie Unschärfe QPixmap Bild?
Ich bin auf der Suche nach so etwas wie einer der folgenden:
Blur(pixmap);
painter.Blur();
painter.Blur(rect);
Was ist der beste Weg, dies zu tun?
Ich denke, liuyanghejerry hat lange genug gewartet, Kredite zu bekommen für die beste Antwort.
InformationsquelleAutor Astronavigator | 2010-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
1.) erklären externen QT-routine:
2.) Verwendung:
InformationsquelleAutor Artiom Khachaturian
Methode 1a: greifen Sie das roh-bits und es selbst tun. Sie müssen ausreichend vertraut mit bitmaps und Unschärfe-algorithmen zu implementieren, die Unschärfe selbst. Wenn Sie wollen, die Art von Präzision, diese ist der Weg zu gehen.
Methode 1b: wer braucht raw-bits? Sie können Bild verwenden.pixel(x,y) und Bild.setPixel(x,y,Farbe) statt. Das wird nicht so schnell wie 1a, aber es sollte ein bisschen einfacher zu verstehen und code.
Methode 2: verwenden einer QGraphicsBlurEffect, über ein widget oder eine Szene. Den code hier mit einem label-widget:
Tweak wie erforderlich. Zum Beispiel, ich vermute die Standard-Grafik-blur-Effekt ist akzeptabel. Ich bin mit der Methode 2 in meinem Projekt.
InformationsquelleAutor AndrewS
Check-out:
InformationsquelleAutor liuyanghejerry
Let ' s Beitrag zu diesem Thema. Ab Qt 5.3, folgende Funktion wird Ihnen helfen, eine Menge mit der Anwendung QGraphicsEffect zu QImage (und nicht verlieren die alpha -)
Ihnen, diese Funktion zu verwenden, um Unschärfe das Bild ist klar:
Natürlich Sie nicht brauchen, um es zu retten, dies war nur ein Beispiel der Nützlichkeit.
Sie können sogar drop einen Schatten:
Und beachten Sie die Umfang-parameter, fügt er
extent
Anzahl der Pixel zu allen Seiten des original-Bildes, besonders für Schatten und Unschärfen nicht cut-off.InformationsquelleAutor Петър Петров
Einen Gaußscher Weichzeichner ist eine einfache Möglichkeit, um einen Unschärfe-Effekt.
Edit: Und siehe, ich kam in der Qt QGraphicsBlurEffect. Eingeführt in Qt 4.6, es scheint genau das zu tun, was Sie wollen.
Die QGraphicsEffects sollen angewendet werden, um Grafik-Ansichten, keine pixmaps. Jedoch, die Allgemeine Idee eines Guassian Unschärfe ist der Weg zu gehen; Sie müssen einfach zu implementieren Sie den Algorithmus selbst auf die pixmap. (Es könnte schneller/einfacher zu konvertieren, um ein QImage, though.)
Jeder kennt diese algorithmen. Aber um Sie umzusetzen myselft ich muss Weg : 1. konvertieren QPixmap 2d-array-2. konvertieren von 2d-array wieder zu pixmap. Wenn Ihr beraten zu implementieren, die es mir dann sagen, wie zu konvertieren zwischen QPixmap-und 2d-array
Erste QImage konvertieren, so können Sie auf die Pixel direkt, dann erstellen Sie einen anderen QImage, gelten Convolution kernel und glücklich sein 🙂 Docs wird dir weiter helfen
Über QGraphicsBlurEffect, überprüfen Sie das stackoverflow.com/a/28026710/625904
InformationsquelleAutor gspr