Я устанавливаю значения для пикселей с помощью setRGB, но после сохранения изображения getRGB получает разные значения, как получить те же значения? - PullRequest
0 голосов
/ 22 января 2019

Получение различных значений пикселей из getRGB после сохранения изображения.

Код указан ниже.

public  BufferedImage formImage(List<Integer>  l, int w, int len)
{
    // l = list of zeros and ones

    BufferedImage dst = new BufferedImage(w, len, 
    BufferedImage.TYPE_4BYTE_ABGR);
    dst.getGraphics().drawImage(img, 0, 0, null);
    int p = 0;
    for (int i = 0, k = 0; i < l.size(); ++k)
    {
        p = 0;
        for (int j = 31; j > -1; --j, ++i)
        {
            p |= (l.get(i) << j); 
        }
        p_out.add(p);
        Color col = new Color(p, true);
        dst.setRGB(k % w, k / w, (new Color(col.getRed(), col.getGreen(), 
        col.getBlue(), col.getAlpha())).getRGB());
        p = dst.getRGB(k % w, k / w);
        //System.out.println("index = " + k + " val = " + p);
    }
    return dst;
}
// in main

BufferedImage test = b.formImage(L2, width, height);

try
{ 

    f1 = new 
    File("E:\\JavaProjects\\BinaryImage\\src\\binaryimage\\out1.bmp");
    if (ImageIO.write(test, "BMP", f1))
    {
        img2 = ImageIO.read(f);
        for (y = 0; y < height; ++y)
        {
            for (x = 0; x < width; ++x)
            {
                L5.add(img2.getRGB(x, y));
            }
        }
        for (int i = 0; i < width * height; ++i)
        {
            if (L5.get(i) != p_out.get(i))
                System.out.println(L5.get(i) + "!=" + p_out.get(i) + " 
            index = " + i);
        }
    }
}
catch(IOException e) 
{ 
    System.out.println(e); 
}

-2631722! = - индекс 5329294 = 0 -3092231! = - индекс 2631681 = 1 -2697567! = = Индекс 5460897 = 2 -3158018! = - индекс 2697584 = 3 -3421276! = - индекс 5394976 = 4 -3224018 ! = - 3421372 индекс = 5 -4408203! = - 5131908 индекс = 6 -3223980! = - 4408081 индекс = 7 -5592397! = = - 4802928 индекс = 8 -3289830! = - 5592476 индекс = 9 -5921283! = - 4737165 индекс = 10 -3421185! = - 5921335 индекс = 11 -5658265! = - 4605572 индекс = 12 -3421223! = - 5658251 индекс = 13 -5394994! = - 4473949 индекс = 14

Я хочу прочитать те же значения пикселей, которые я вставил в изображение.

...