图片的pitch

之前在bitmap中看到过pitch,一直没搞明白,这次项目中又遇到了,所以就仔细了解了下。


pitch与width

以一张640*480的每个像素点为24位(3字节)颜色的图为例:

width:表示图片的逻辑宽度,在这里就是640,这个值与色深无关及其他都无关,你所见的宽度就是它的值

pitch:表示图片中一行数据所占的字节数,或者说是跨度,在这里应该是640*3,因为图片宽度是640,每个像素是3个字节数据,那么一行数据就是640*3


注意:

有些情况下,pitch的值可能是正也可能是负,取决于数据排列方式


几个参考资料:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb206357(v=vs.85).aspx

http://www.freetype.org/freetype2/docs/glyphs/glyphs-7.html




### Cesium 中实现图片分屏功能 要在 Cesium 中实现图片分屏功能,可以通过创建多个视口(viewport)来完成。每个视口可以独立显示不同的图像或场景,同时也可以保持某些操作的同步性,例如缩放和平移。 以下是基于引用内容和专业知识构建的一个示例代码: #### 示例代码 ```javascript // 初始化 Cesium Viewer const viewerLeft = new Cesium.Viewer('cesiumContainerLeft', { terrainProvider: Cesium.createWorldTerrain(), }); const viewerRight = new Cesium.Viewer('cesiumContainerRight', { terrainProvider: Cesium.createWorldTerrain(), }); // 设置左视口的地图初始位置 viewerLeft.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883, 1000), }); // 设置右视口的地图初始位置 viewerRight.camera.setView({ destination: Cesium.Cartian3.fromDegrees(-75.59777, 40.03883, 1000), }); // 添加图片到左视口 const yubaoImage = 'path_to_your_left_image.jpg'; // 替换为实际图片路径 viewerLeft.entities.add({ position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), // 图片中心坐标 ellipse: { semiMajorAxis: 5000, semiMinorAxis: 5000, material: new Cesium.ImageMaterialProperty({ image: yubaoImage }), }, }); // 添加图片到右视口 const shikuangImage = 'path_to_your_right_image.jpg'; // 替换为实际图片路径 viewerRight.entities.add({ position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), // 图片中心坐标 ellipse: { semiMajorAxis: 5000, semiMinorAxis: 5000, material: new Cesium.ImageMaterialProperty({ image: shikuangImage }), }, }); // 同步两个视口的操作 function syncCameras() { const leftCameraPosition = viewerLeft.camera.position; const leftCameraHeading = viewerLeft.camera.heading; const leftCameraPitch = viewerLeft.camera.pitch; viewerRight.camera.setView({ destination: leftCameraPosition, orientation: { heading: leftCameraHeading, pitch: leftCameraPitch, }, }); } viewerLeft.scene.postRender.addEventListener(syncCameras); ``` 此代码实现了以下功能: - 创建两个独立的 Cesium `Viewer` 对象,分别对应左侧和右侧视口。 - 在每个视口中加载一张图片作为实体[^2]。 - 提供了一个函数用于同步两个视口的相机视角[^1]。 ### 注意事项 为了使分屏效果更加直观,HTML 需要定义两个容器(如 `div`),并分别为它们分配一半屏幕宽度。例如: ```html <div id="cesiumContainerLeft" style="width: 50%; height: 100vh; float: left;"></div> <div id="cesiumContainerRight" style="width: 50%; height: 100vh; float: right;"></div> ``` 通过这种方式,可以在 Cesium 中轻松实现图片分屏功能,并支持基本的交互操作。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值