簡體   English   中英

如何以矩陣形式(xy平面)使像素在java的[1-255]范圍內?

[英]How to make pixel be in range [1-255] in java in matrix form (x-y plane)?

我有一個PNG類型的圖像(512像素* 512像素)。 我知道每個像素都是8位類型。 因此,我們的范圍是[0-255]。 問題是我要此圖像的行和列,以使每個單元格的數字都在[0-255]之間。

不幸的是,我的程序運行正常,沒有錯誤,但壞消息是它沒有我想要的。 每個單元的輸出有7個數字,即2894893 -2829100 -2829100 -2894893 -2894893 -2960686 -2960686 -2960686 -3092272 -3223858 -3289651 -3421237 -4144960 -3684409 -3552823 -4144960 -4802890 -5263441等

我想要的只是[1-255]之間的范圍? 即代替上面的輸出,我們應該有類似23 182 33 250之類的東西。

請記住,我需要使用2維而不是1維(意味着array [row] [column]而不是array [index])。 這是代碼:

 ima = ImageIO.read(new File("how.png"));

    int [] pix = ima.getRGB(0, 0, ima.getWidth(), ima.getHeight(), null, 0, ima.getWidth());

    int count=0;        
    for (int i=0; i < ima.getHeight() ; i++)
    {
        for (int j=0; j < ima.getWidth() ; j++){
            System.out.print(pix[count]+" ");
            count++;
        }
        System.out.println();

    }

此方法來自成員@davenpcj,該成員使用java從圖像中獲取像素數據

謝謝

您得到的是RGB值,三個分量中的每個分量都存儲為一個字節。 也就是說,整數由4個字節組成,每個像素分別代表像素的R,G,B和alpha分量。 例如,像素值2894893如下所示:

 00000000 00101100 00101100 00101101

您可以通過屏蔽整數像素值來獲得各個通道:

int red = (pix[count] & 0xFF);
int green = (pix[count] >> 8) & 0xFF;    
int blue = (pix[count] >> 16) & 0xFF;
int alpha = (pix[count] >> 24) & 0xFF;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM