亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中將 Blob 轉換為圖像

在 Go 中將 Blob 轉換為圖像

Go
LEATH 2021-09-27 17:23:45
我正在嘗試在 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 回答

  • 1 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號