我正在嘗試在 Go 中創建一個 mbtiles 服務器。該文件遵循mbtiles 規范。該tile_data字段是 a BLOB,我正在嘗試查詢數據庫并獲取相應的圖像(存儲為 blob 類型)。到目前為止,查詢還可以,但我得到的tile_data結果已損壞。我不確定如何將 SQLite BLOB 映射到正確的 Go 數據結構。到目前為止,我嘗試var tileData []byte按照這個github gombtiles 示例使用但沒有成功。返回值讓我得到一個只有 4 個字節的數組,我懷疑這有點正確,因為當我在 SQLite GUI 中看到 BLOB 作為文本類型時,它也讓我得到 4 個字符(類似于???à)總結一下:這tile_data是一個 BLOB(存儲圖像),我無法正確轉換為 Go var。如何在 Go 中將 BLOB 轉換為圖像?更新:這些???à字符0xFF 0xD8 0xFF 0xE0確實是 JPEG 文件的開始。我使用的 MBTile 文件與我通過 Mapbox iOS SDK 在 iOS 應用程序中使用的相同,因此該文件沒有損壞,我實際上可以使用 SQLite GUI 看到 BLOB 圖像。MBTiles 規范說該字段是 BLOB 類型,實際上,這就是我正在使用的字段類型。同樣,數據庫很好,與外部 iOS 應用程序使用的數據庫相同。我什至可以成功查詢其他數據。對于上下文,這是我的孤立代碼。func TilesHandler(w http.ResponseWriter, r *http.Request) { db, _ := sql.Open("sqlite3", "./mapSource.mbtiles") defer db.Close() rows, _ := db.Query("SELECT tile_data FROM tiles WHERE zoom_level = 10 AND tile_column = 309 AND tile_row = 569") defer rows.Close() var tileData []byte for rows.Next() { rows.Scan(&tileData) } w.Write(tileData)}為簡單起見,縮放和坐標被硬編碼。tiledata正在返回提到的 4 個字節。更新 2: 這是tiles 表的一個特定記錄的輸出。請注意,該tile_data字段是一個 BLOB,并且 GUI 在底部顯示 4 個字符。那正是我[]byte在 Go 代碼的數組中收到的那個。所以我的問題是:我的數據庫中有這個 BLOB 圖像文件,它是一個 jpeg 圖像。我如何閱讀它并將其顯示為我的網頁中的圖像?我想讀取那個 BLOB 并在我的 http 請求中返回一個圖像。瓷磚行示例:平鋪字段類型
- 1 回答
- 0 關注
- 202 瀏覽
添加回答
舉報
0/150
提交
取消