簡體   English   中英

根據隨機數據創建位圖文件

[英]Create a bitmap file from random data

如何將隨機數據的二維數組轉換為位圖? 我正在做的是使用菱形平方算法創建高度圖-效果很好-但我希望能夠可視化結果以進行測試和調試。 我認為最好的方法是將結果生成為灰度位圖。

我已經看到了許多讀寫位圖數據的示例(即,將圖像讀取到字節緩沖區然后再次返回),但是沒有任何例子可以解釋如何獲取隨機數據並使用它創建圖像。 我要做的就是獲取數組的每個值並將其轉換為灰度像素。

例如:

data[0][0] = 98, then pixel (0,0) would be RGB (98,98,98)
data[0][1] = 220, then pixel (0,1) would be RGB (220,220,220)

我的隨機值已經在0到255之間(包括0和255之間)。

這是一種相當快的方法。 要使用此方法,必須將數據扁平化為寬度*高度的3倍的一維數組。 我使用在每個位置填充Math.random()的2D數據數組進行了測試

int width = data.length;
int height = data[0].length;

int[] flattenedData = new int[width*height*3];
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
int ind = 0;
for (int i = 0; i < width; i++)
{
    for (int j = 0; j < height; j++)
    {
        greyShade = data[i][j];
        flattenedData[ind + j*3] = greyShade;
        flattenedData[ind + j*3+1] = greyShade;
        flattenedData[ind + j*3+2] = greyShade;

      }
    ind += height*3;
}       

img.getRaster().setPixels(0, 0, 100, 100, flattenedData);

JLabel jLabel = new JLabel(new ImageIcon(img));

JPanel jPanel = new JPanel();
jPanel.add(jLabel);
JFrame r = new JFrame();
r.add(jPanel);
r.show();

有兩種API可以處理您可能要查看的圖像,包括至少一個是標准擴展庫( javax.imageio )的一部分。

或者,如果您想手動滾動,則BMP文件格式並不十分復雜,文檔也很容易找到 ,並且示例代碼也很容易獲得

暫無
暫無

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

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