Hat Qt eine Möglichkeit, die Begrenzungsbox eines Bildes zu finden?

8

Da ich ein .png Bild mit einem transparenten Hintergrund habe, möchte ich die Begrenzungsbox der nicht-transparenten Daten finden. Die Verwendung von verschachtelten for Schleifen mit QImage.pixel() ist sehr langsam. Gibt es eine eingebaute Methode, dies in Qt zu tun?

    
retracile 15.09.2010, 19:10
quelle

2 Antworten

4

Wenn pixel () zu langsam für Sie ist, sollten Sie eine effizientere zeilenweise Datenadressierung bei einem QImage p:

in Erwägung ziehen %Vor%

Ich bezweifle, dass es schneller gehen wird.

    
ypnos 15.09.2010, 21:55
quelle
3

Es gibt eine Option, die die Verwendung von QGraphicsPixmapItem und die Abfrage der Begrenzungsbox des undurchsichtigen Bereichs ( QGraphicsPixmapItem::opaqueArea().boundingRect() ) beinhaltet. Nicht sicher, ob es der beste Weg ist, aber es funktioniert :) Es könnte sich lohnen, in Qt's Quellcode zu gucken, um zu sehen, welcher Code das Herzstück ist.

Der folgende Code gibt die Breite und Höhe des Bildes aus, gefolgt von der Breite und Höhe der opaken Bereiche des Bildes:

%Vor%     
Arnold Spence 15.09.2010 21:38
quelle

Tags und Links