php 360全景,HTML5 Canvas实现360度全景方法
本文主要介绍HTML5 Canvas实现360度全景图的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。
很多购物网站现在都支持360实物全景图像,可以360度任意选择查看样品,这样对购买者来说是一个很好的消费体验,网上有很多这样的插件都是基于jQuery实现的有收费的也有免费的,其实很好用的一个叫3deye.js的插件。该插件支持桌面与移动终端iOS与Android, 它的demo程序:http://www.voidcanvas.com/demo/28823deye/
自己玩了玩这个Demo以后,照着它的思路,用HTML5 Canvas也实现了类似的功能。
所以先说一下它的360度全景图的原理
1. 首先需要对实物拍照,间隔是每张照片旋转15度,所以需要23张照片。
2.照片准备好了以后,尽量选择JPG格式,裁剪到适当大小。
3.JavaScript中预加载所有照片,可以配合进度条显示加载精度
4.创建/获取Canvas对象,加上鼠标监听事件,当鼠标左右移动时候,适度的绘制不同帧。大致的原理就是这样,简单吧!
实现代码:
Full 360 degree View
var ctx = null; // global variable 2d context
var frame = 1; // 23
var width = 0;
var height = 0;
var started = false;
var images = new Array();
var startedX = -1;
window.onload = function() {
var canvas = document.getElementById("fullview_canvas");
canvas.width = 440;// window.innerWidth;
canvas.height = 691;//window.innerHeight;
width = canvas.width;
height = canvas.height;
var bar = document.getElementById('loadProgressBar');
for(var i=1; i<24; i++)
{
bar.value = i;
if(i<10)
{
images[i] = new Image();
images[i].src = "0" + i + ".jpg";
}
else
{
images[i] = new Image();
images[i].src = i + ".jpg";
}
}
ctx = canvas.getContext("2d");
// mouse event
canvas.addEventListener("mousedown", doMouseDown, false);
canvas.addEventListener('mousemove', doMouseMove, false);
canvas.addEventListener('mouseup', doMouseUp, false);
// loaded();
// frame = 1
frame = 1;
images[frame].onload = function() {
redraw();
bar.style.display = 'none';
}
}
function doMouseDown(event) {
var x = event.pageX;
var y = event.pageY;
var canvas = event.target;
var loc = getPointOnCanvas(canvas, x, y);
console.log("mouse down at point( x:" + loc.x + ", y:" + loc.y + ")");
startedX = loc.x;
started = true;
}
function doMouseMove(event) {
var x = event.pageX;
var y = event.pageY;
var canvas = event.target;
var loc = getPointOnCanvas(canvas, x, y);
if (started) {
var count = Math.floor(Math.abs((startedX - loc.x)/30));
var frameIndex = Math.floor((startedX - loc.x)/30);
while(count > 0)
{
console.log("frameIndex = " + frameIndex);
count--;
if(frameIndex > 0)
{
frameIndex--;
frame++;
} else if(frameIndex < 0)
{
frameIndex++;
frame--;
}
else if(frameIndex == 0)
{
break;
}
if(frame >= 24)
{
frame = 1;
}
if(frame <= 0)
{
frame = 23;
}
redraw();
}
}
}
function doMouseUp(event) {
console.log("mouse up now");
if (started) {
doMouseMove(event);
startedX = -1;
started = false;
}
}
function getPointOnCanvas(canvas, x, y) {
var bbox = canvas.getBoundingClientRect();
return { x: x - bbox.left * (canvas.width / bbox.width),
y: y - bbox.top * (canvas.height / bbox.height)
};
}
function loaded() {
setTimeout( update, 1000/8);
}
function redraw()
{
// var imageObj = document.createElement("img");
// var imageObj = new Image();
var imageObj = images[frame];
ctx.clearRect(0, 0, width, height)
ctx.drawImage(imageObj, 0, 0, width, height);
}
function update() {
redraw();
frame++;
if (frame >= 23) frame = 1;
setTimeout( update, 1000/8);
}
Auto Play
Demo演示文件下载地址-> fullview_jb51.rar
相关推荐:
php 360全景,HTML5 Canvas实现360度全景方法相关推荐
- html360全景图原理,HTML5 Canvas实现360度全景图
HTML5 Canvas实现360度全景图 发布时间:2020-07-22 12:15:07 来源:51CTO 阅读:557 作者:gloomyfish 很多购物网站现在都支持360实物全景图像,可以 ...
- html页面画一个矩形,使用HTML5 canvas绘制一个矩形的方法
使用HTML5 canvas绘制一个矩形的方法 发布时间:2020-08-29 11:23:12 来源:亿速云 阅读:102 作者:小新 这篇文章将为大家详细讲解有关使用HTML5 canvas绘制一 ...
- CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解
CSS3 渐变新特性和HTML5 Canvas画布背景渐变实现方法详解 大家好,又见面了,感觉我上一篇博客对部分同学都挺有帮助的,于是我决定继续写下去,会继续的解析知识点让大家更容易理解,希望能给大家 ...
- html5全景代码,HTML5 Canvas实现360度全景图的示例代码
很多购物网站现在都支持360实物全景图像,可以360度任意选择查看样品,这样对购买者来说是一个很好的消费体验,网上有很多这样的插件都是基于jQuery实现的有收费的也有免费的,其实很好用的一个叫3de ...
- HTML5 Canvas实现360度全景图
很多购物网站现在都支持360实物全景图像,可以360度任意选择查看样品,这样 对购买者来说是一个很好的消费体验,网上有很多这样的插件都是基于JQuery实现的 有收费的也有免费的,其实很好用的一个叫3 ...
- 提高HTML5 canvas性能的几种方法
简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为了web中受到广泛支持的2D快速模式绘图(2D immediate mode graphic)的标准.许多开发者现在 ...
- 提高HTML5 canvas性能的几种方法!
http://blog.csdn.net/zyz511919766/article/details/7401792 简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为 ...
- clear html5代码,用HTML5 Canvas API中的clearRect()方法实现橡皮擦功能
在现实世界中,我们使用画笔在画板上进行绘画:在html5 canvas中,我们同样可以使用canvas的画笔--CanvasRenderingContext2D对象在canvas上进行绘画.众所周知, ...
- html5 canvas 画笔透明的实现方法
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5 canvas 计算文字宽度的方法(measureText)
var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font= ...
最新文章
- Spring boot自动配置使用
- Python中的ThreadLocal变量
- 免费福利 | 送你一份免费音频,让你躺着也能学习葡萄酒知识!
- Java 8中字符串拼接新姿势:StringJoiner
- ASCII表 基本记忆 -- C
- 《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
- WebSocket消息推送(实现进行聊天)和WebSocket简介
- fio 磁盘I/O测试工具
- OneDrive更换要同步文件夹
- Java 基础知识 【钢镚核恒】
- MATLAB中MRE误差怎么算,『怎样用excel 求RMSE(均方根误差)和MRE(平均相对误差),不知道选计算函数中的哪个,非常谢谢。』excle怎么算均方误差...
- React-native学习-59:使用react-native-vector-icons图标库
- selenium-登录腾讯防水墙案例
- 运营方法论——增长黑客
- 计算机组成部件及其作用,计算机硬件组成成分各自的功能 计算机硬件有哪几部分组成?请分别说明各部分的作用?...
- 基于springboot的校园食堂订餐系统
- Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
- 05如何处理类别特征?
- sql 转换 不足位数补0
- 织梦网站在空间怎么转服务器,织梦网站换空间