Hi,
ich habe (erstmal) 2 Fragen zum Thema Performance:
1. Wie bekomme ich am schnellsten die RGB-Werte eines BufferedImages für jeden Pixel? Gibt es da ne schnellere Möglichkeit als das komplette Bild in zwei verschachtelten Schleifen zu durchlaufen und jeden Pixel mit
zu speichern? Am Ende benötige ich ein int-Array dass alle rgb Werte repräsentiert (also so solls am Ende aussehen
) und eines, dass den alpha-Kanal darstellt (z. B.
). Unter Umständen wäre ich auch bereit (wenns schneller geht) die Daten in irgendeiner anderen Form abzuspeichern.
2. Wie kann ich am schnellsten das letzte Bit eines max. 8 Bit langen Integers nach meinem belieben ändern? Ich denke mal, es wird nicht die schnellste Variante sein, wenn ich den int in einen Binär-String umwandle, dort dann mittels substring und length() das letzte Zeichen wegschneide und entweder "1" oder "0" dranhänge
. Was mir sonst noch einfallen würde, wäre überprüfen, ob es eine gerade oder eine ungerade zahl ist. Falls gerade und das letzte bit muss eine 1 sein => zahl + 1, falls ungerade und das letzte Bit muss 0 sein => zahl - 1, ansonsten unverändert lassen.
Jenachdem wie eure Antworten ausfallen bzw. was mir sonst noch so einfällt werde ich bestimmt noch mehr Fragen
.
Danke!
ich habe (erstmal) 2 Fragen zum Thema Performance:
1. Wie bekomme ich am schnellsten die RGB-Werte eines BufferedImages für jeden Pixel? Gibt es da ne schnellere Möglichkeit als das komplette Bild in zwei verschachtelten Schleifen zu durchlaufen und jeden Pixel mit
Code:
color = new Color(image.getRGB(x, y));
red = color.getRed();
green = color.getGreen();
blue = color.getBlue();
alpha = color.getAlpha();
zu speichern? Am Ende benötige ich ein int-Array dass alle rgb Werte repräsentiert (also so solls am Ende aussehen
Code:
int[] ar = {redpixel1, greenpixel1, bluepixel1, redpixel2, greenpixel2, bluepixel2, redpixel3, ...};
) und eines, dass den alpha-Kanal darstellt (z. B.
Code:
int[] alpha = {alphapixel1, alphapixel2, alphapixel3, alphapixel4, ...};
). Unter Umständen wäre ich auch bereit (wenns schneller geht) die Daten in irgendeiner anderen Form abzuspeichern.
2. Wie kann ich am schnellsten das letzte Bit eines max. 8 Bit langen Integers nach meinem belieben ändern? Ich denke mal, es wird nicht die schnellste Variante sein, wenn ich den int in einen Binär-String umwandle, dort dann mittels substring und length() das letzte Zeichen wegschneide und entweder "1" oder "0" dranhänge
Jenachdem wie eure Antworten ausfallen bzw. was mir sonst noch so einfällt werde ich bestimmt noch mehr Fragen
Danke!