我正在製作一個顯示房間圖片的應用程序。當用戶點擊圖片時,圖片會彈出對象的單詞,並且設備會顯示名稱。爲了做到這一點,我在對象的位置加載了具有彩色塊的圖案圖像,並將不同對象名稱映射到該塊的特定顏色的文本文件。在Android應用程序中解析Java生成的圖像
我還製作了一個可用於創建這兩個文件的Java應用程序。用戶在圖像上繪製矩形,應用程序將繪製的矩形保存到新的圖像文件中。
以下是創建/保存圖像的Java代碼:
BufferedImage i = new BufferedImage(img.getWidth(), img.getHeight(),
BufferedImage.TYPE_INT_RGB);
Graphics g = i.getGraphics();
g.setColor(Color.BLACK);
g.fillRect(0, 0, i.getWidth(), i.getHeight());
//draw all the rectangles on the image
for(Rectangle r: rects.keySet()){
g.setColor(rects.get(r));
g.fillRect(r.x, r.y, r.width, r.height);
}
//write the BufferedImage to the file
try {
ImageIO.write(i, "png", saveTo);
} catch (IOException e) {
e.printStackTrace();
}
當我在Photoshop中,塗料等打開圖片,它驗證彩色塊是他們應該是顏色。
當我在Android設備中加載它們時,它們的顏色不一樣。它們在每種顏色的1-3範圍內有所不同(因此25:0:0的顏色讀取爲24:0:0或可能爲22:0:0)。
在設備上,我將圖像作爲位圖加載,並使用TouchEvent.getX()和getY()來查找圖像上的位置。然後我使用Bitmap.getPixel(x,y)來獲取特定的顏色。
如果我使用像Photoshop或Paint這樣的編輯器,我會得到像正常一樣閱讀的完美圖像。我的用戶已經要求他們自己的編輯器應用程序,所以它也可以創建配置文件。
對不起,這是很長的時間,並感謝您的幫助!
我當時正在加載圖像作爲資產。我只是意識到我在Java代碼中設置了錯誤的位圖(我使用了TYPE_INT_RGB而不是TYPE_INT_ARGB) – fitztho