public void Write(Stream input, OutputTile outputTile) { var sql = @"insert into tiles(zoom_level,tile_column,tile_row,tile_data) values(@zoom,@x,@y,@tileData);"; int ret = 0; byte[] buffer = new byte[4096]; using (MemoryStream ms = new MemoryStream()) { ret = input.Read(buffer, 0, buffer.Length); while (ret > 0) { ms.Write(buffer, 0, ret); ret = input.Read(buffer, 0, 4096); } byte[] tobase64 = ms.ToArray(); StringBuilder sb = new StringBuilder(); sb.Append("data:image/png;base64,").Append(Convert.ToBase64String(tobase64, 0, tobase64.Length)); using (var conn = new SQLiteConnection(_sqliteConnectionString)) { ret = conn.Execute(sql, new { zoom = outputTile.Zoom, x = int.Parse(outputTile.X), y = int.Parse(outputTile.Y), tileData = sb.ToString() }); } } }
protected virtual string BuildTilePath(OutputTile outputTile) { string zoomFolder; if (!_zoomFolderDic.ContainsKey(outputTile.Zoom)) { zoomFolder = Path.Combine(_rootPath, outputTile.Zoom); Directory.CreateDirectory(zoomFolder); _zoomFolderDic[outputTile.Zoom] = zoomFolder; } else { zoomFolder = _zoomFolderDic[outputTile.Zoom]; } string zoomXFolder; string zoomXKey = outputTile.Zoom + "_" + outputTile.X; if (!_zoomAndXFolderDic.ContainsKey(zoomXKey)) { zoomXFolder = Path.Combine(zoomFolder, outputTile.X); Directory.CreateDirectory(zoomXFolder); _zoomFolderDic[zoomXKey] = zoomXFolder; } else { zoomXFolder = _zoomFolderDic[zoomXKey]; } return(Path.Combine(zoomXFolder, outputTile.Y + ".png")); }
public void Write(Stream input, OutputTile outputTile) { var sql = @"insert into tiles(zoom_level,tile_column,tile_row,tile_data) values(@zoom,@x,@y,@tileData);"; int ret = 0; byte[] buffer = new byte[4096]; using (MemoryStream ms = new MemoryStream()) { ret = input.Read(buffer, 0, buffer.Length); while (ret > 0) { ms.Write(buffer, 0, ret); ret = input.Read(buffer, 0, 4096); } using (var conn = new SQLiteConnection(_sqliteConnectionString)) { ret = conn.Execute(sql, new { zoom = outputTile.Zoom, x = int.Parse(outputTile.X), y = int.Parse(outputTile.Y), tileData = ms.ToArray() }); } } }
public void Write(Stream input, OutputTile outputTile) { string filePath = BuildTilePath(outputTile); using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { byte[] buffer = new byte[8192];//8K int ret = input.Read(buffer, 0, buffer.Length); while (ret > 0) { fs.Write(buffer, 0, ret); ret = input.Read(buffer, 0, buffer.Length); } } }