2013-06-19 89 views
0

Android的Google Maps api v2提供了一個TileOverlay,可以添加TileProviders。 TileProvider會根據lat,long和depth生成一個Tile對象。爲了製作拼貼,必須給它一個寬度(簡單),高度(簡單),以及一個以字節數組表示的圖像(令我困惑)。如果我想'畫'一個簡單的對象,然後把它變成一個字節數組,我該怎麼做?如何在android谷歌地圖中製作自定義瓷磚

比如我在尋找的東西,看起來像

Canvas canvas = new canvas(); 
... 
canvas.drawRect(); //Or something like this (just an example) 
... 
byte[] bytes = canvas.SomeConversionFunctionOrProcessThatIDontKnow(); 
return new Tile(1,1,bytes); 

回答

2
public byte[] getByteArray (String image) throws IOException { 
File yourImg = new File(image); 
BufferedImage bufferedImage = ImageIO.read(yourImg); 
WritableRaster wRaster = bufferedImage .getRaster(); 
DataBufferByte data = (DataBufferByte) wRaster.getDataBuffer(); 

return data.getData(); 
} 

這應該做的伎倆; )

+0

有沒有辦法手動繪製圖像(使用drawOval,drawRect類型的函數),然後將其轉換爲字節[]? –

+0

當您在Java中使用Graphics時,是否將結果保存到BufferedImage中?如果你這樣做,你應該嘗試相同的代碼,從「WritableRaster」開始並嘗試。我沒有更好的解決方案;) –

+0

所以爲了清楚起見,我創建了一個新的BufferedImage,從中獲取一個Graphics對象,然後使用Graphics的函數(如drawRect()等)來形成圖像,然後使用bufferedImage.getRaster()。getDataBuffer()。getData()來獲取一個字節數組? 謝謝! –

0

Tile#data應將壓縮後的圖像數據放入其中一個supported image formats。換句話說,圖像文件的原始內容。如果您已經有解碼的Bitmap,請使用Bitmap#compress(...)將其寫入ByteArrayOutputStream,然後從中獲取byte[]

相關問題