So extrahieren Sie ein Pixelarray aus einem Bild
In Java ist es möglich, Pixeldaten aus einem BufferedImage als int[][]-Array zu erhalten Direkter Zugriff auf bestimmte Pixel. Hier sind einige Möglichkeiten, dies zu erreichen:
Verwenden der getRGB()-Methode von BufferedImage
Diese Methode kombiniert Alpha-, Rot-, Grün- und Blauwerte in einem einzigen int und gibt es zurück. Um die einzelnen Farbkomponenten zu extrahieren, müssen Sie die Farbmaske abrufen und die Werte entsprechend verschieben. Dieser Ansatz ist relativ einfach, aber nicht der effizienteste.
Direkter Zugriff auf das Pixel-Array
Mit dem folgenden Code können Sie direkt auf das Pixel-Array als Byte zugreifen array:
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
Diese Methode ist deutlich schneller als die getRGB()-Methode, insbesondere bei großen Bilder.
Leistungsvergleich
Um den Leistungsunterschied zu demonstrieren, wurde ein Test mit einem 12.000 x 12.000 Pixel großen Bild durchgeführt. In der folgenden Tabelle werden die Ausführungszeiten der beiden Methoden verglichen:
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
Fazit
Der direkte Zugriff auf das Pixelarray mithilfe der DataBufferByte-Klasse ist der empfohlene Ansatz für effiziente Pixel Manipulation. Im Vergleich zur getRGB()-Methode bietet sie erhebliche Leistungsvorteile, insbesondere beim Umgang mit großen Bildern.
Das obige ist der detaillierte Inhalt vonWie kann ich Pixeldaten effizient als Array aus einem BufferedImage in Java extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!