在cesium中导出图片

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>导出图片</title>
    <script src="/static/Cesium/Cesium.js"></script>
    <link rel="stylesheet" href="/static/Cesium/Widgets/widgets.css">


    <style>
        html,
        body,
        #csiumContain {
            width: 100%;
            height: 100%;
            margin: 0px;
        }

        .cesium-widget-credits {
            display: none !important;
            /*去除Cesium默认版权信息*/
        }

        .tool-bar {
            position: absolute;
            top: 1vh;
            left: 2vw;
            z-index: 999999;
        }

        .cesium-viewer-infoBoxContainer {
            display: none !important;
        }
    </style>

</head>

<body>


    <div id="toolbar" class="param-container tool-bar layui-form-item">

        <button  onclick="saveToFile()">场景出图</button>
    </div>
    <div id="csiumContain"></div>


</body>


<script>

    Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(90, -20, 110, 90);
    var viewer = new Cesium.Viewer("csiumContain", {
        homeButton: false,//是否显示Home按钮
        animation: false,//是否显示动画控件
        timeline: false,//是否显示时间线控件
        fullscreenButton: false,
        baseLayerPicker: false,//是否显示图层选择控件
        sceneModePicker: true, //是否显示投影方式控件
        navigationHelpButton: false, //是否显示帮助信息控件
        geocoder: false, //是否显示地名查找控件
        sceneModePicker: false,//是否显示3D/2D选择器
        contextOptions: {
            webgl: {
                alpha: true,
                depth: true,
                stencil: true,
                antialias: true,
                premultipliedAlpha: true,
                //通过canvas.toDataURL()实现截图需要将该项设置为true
                preserveDrawingBuffer: true,
                failIfMajorPerformanceCaveat: true
            }
        }
      
    })

    function saveToFile() {
        let canvas = viewer.scene.canvas;
        let image = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");

        let link = document.createElement("a");
        let blob = dataURLtoBlob(image);
        let objurl = URL.createObjectURL(blob);
        link.download = "scene.png";
        link.href = objurl;
        link.click();
    }

    function dataURLtoBlob(dataurl) {
        let arr = dataurl.split(','),
            mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]),
            n = bstr.length,
            u8arr = new Uint8Array(n);
        while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], { type: mime });
    }
</script>

</html>

点击按钮即可按照浏览器的下载路径保存

上一篇:场景设置


下一篇:Cesium中文教程-内容变化