Jag har en oled-display med 16-bitars färger och vill konvertera bilder för att visa dem på den. Jag skrev ett java-program som gör om RGB888 till RGB565 genom att helt enkelt trunkera de 8 bitarna för varje pixel till 5 respektive 6 respektive 5 bitar.
Följande del gör det jobbet
Kod: Markera allt
for (int i = 0; i < img.getWidth();i++) {
for (int j = 0;j < img.getHeight();j++) {
int a = 0, b = 0, red, green, blue;
a = img.getRGB(i, j);
red = (a & 0xFF0000) >>> 16;
green = (a & 0x00FF00) >>> 8;
blue = a & 0x0000FF;
a = ((blue >>> 3) << 11) |
(((green >>> 2) << 5) & 0x7E0) |
((red >>> 3) & 0x1F);
b = a >>> 8;
buffer[j*2] = (byte)b;
buffer[j*2 + 1] = (byte)a;
}
out.write(buffer);
}
Jag ber om ursäkt ifall frågan är på fel forum, men displayen är elektronikrelaterad i alla fall då jag byggde allt för att styra den själv.
Tack