import javax.microedition.lcdui.Image; /** * * @author Administrator */ public class UCBitmap { } /** * */ class CTonsCinza { int[][] TonsCinza; public int Larg, Alt; int pixel, azul, verde, vermelho, raw[]; /** * ConstrĂ³i um CTonsCinza a partir de uma Image */ CTonsCinza(Image img) { Larg = img.getWidth(); Alt = img.getHeight(); TonsCinza = new int[Alt][Larg]; raw = new int[Larg*Alt]; img.getRGB(raw, 0, Larg, 0, 0, Larg, Alt); for (int y = 0; y < Alt; y++) { for (int x = 0; x < Larg; x++) { pixel=raw[x+y*Larg]; azul=pixel & 0x0000FF; verde=(pixel & 0xFF00) >> 8; vermelho=(pixel & 0xFF0000) >> 16; pixel=azul*11+verde*59+vermelho*30; pixel*=0.01; TonsCinza[y][x] = pixel; } } } /** * Retorna uma Image gerada a partir do CTonsCinza */ Image SaveImage() { int[] rawRGB = new int[Larg*Alt]; int ponteiro = 0; for (int y = 0; y < Alt; y++) { for (int x = 0; x < Larg; x++) { rawRGB[ponteiro] = TonsCinza[y][x]; rawRGB[ponteiro] = TonsCinza[y][x]; rawRGB[ponteiro++] = TonsCinza[y][x]; } } Image img = Image.createRGBImage(rawRGB, Larg, Alt, false); return img; } }; class Cor { int Azul, Verde, Vermelho; Cor(int pixel) { Azul=pixel & 0xFF; Verde=(pixel & 0xFF00) >> 8; Vermelho=(pixel & 0xFF0000) >> 16; } void SetAzul() { Azul = 0xFF; Verde = 0; Vermelho = 0; } void SetVermelho() { Azul = 0; Verde = 0; Vermelho = 0xFF; } void SetVerde() { Azul = 0; Verde = 0xFF; Vermelho = 0; } void SetAmarelo() { Azul = 0; Verde = 0xFF; Vermelho = 0xFF; } void SetMagenta() { Azul = 0xFF; Verde = 0; Vermelho = 0xFF; } void SetCyan() { Azul = 0xFF; Verde = 0xFF; Vermelho = 0; } void SetRGB(byte R, byte G, byte B) { Azul = B; Verde = G; Vermelho = R; } }; //--------------------------------------------------------------------------- class CBitmap { Cor [][] PMCor; public int Larg, Alt; int raw[]; CBitmap(Image img) { Larg = img.getWidth(); Alt = img.getHeight(); raw = new int[Larg*Alt]; img.getRGB(raw, 0, Larg, 0, 0, Larg, Alt); PMCor = new Cor[Alt][Larg]; for (int y = 0; y < Alt; y++) { for (int x = 0; x < Larg; x++) { PMCor[y][x] = new Cor(raw[x+y*Larg]); } } } Image SaveImage() { int[] rawRGB = new int[Larg*Alt]; int ponteiro = 0; for (int y = 0; y < Alt; y++) { for (int x = 0; x < Larg; x++) { rawRGB[ponteiro] = PMCor[y][x].Azul; rawRGB[ponteiro] += PMCor[y][x].Verde << 8; rawRGB[ponteiro] += PMCor[y][x].Vermelho << 16; rawRGB[ponteiro++] += 0xFF000000; } } Image img = Image.createRGBImage(rawRGB, Larg, Alt, false); return img; } };