嘿,我使用j2me来读取图像
我想在像Darkenes这样的图像上做一些处理,点亮
我已经将图像作为输入流
InputStream iStrm = getClass().getResourceAsStream("/earth.PNG");
ByteArrayOutputStream bStrm = new ByteArrayOutputStream();
int ch;
while ((ch = iStrm.read()) != -1){
bStrm.write(ch);
byte imageData[] = bStrm.toByteArray();
Image im = Image.createImage(imageData, 0, imageData.length);
如何获取RGB值或如何将一些值添加到像素数组中 imageData []因此它可以更亮或更暗,
是否有包含在我读过的输入流中的标题数据,当我添加一些值时会导致错误?
答案 0 :(得分:0)
我认为你应该能够做到以下几点:
int width = im.getWidth();
int height = im.getHeight();
int[] rgbData = new int[width*height]; // since we are working with rgba
im.getRGB(rgbData, 0, width, 0, 0, width, height);
// now, the data is stored in each integer as 0xAARRGGBB,
// so high-order bits are alpha channel for each integer
现在,如果您想将它们分成三个数组,每个通道一个,您可以执行以下操作:
int red[][] = new int[width][height];
int green[][] = new int[width][height];
int blue[][] = new int[width][height];
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
red[i][j] = rgb[i*width + j] & 0xFF0000;
green[i][j] = rgb[i*width + j] & 0xFF00;
blue[i][j] = rgb[i+width + j] & 0xFF;
}
}