Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将动态图像与HTML5 WebGL 360度全景查看器和Codeigniter中的Three.js集成_Javascript_Php_Html_Codeigniter_360 Panorama Viewer - Fatal编程技术网

Javascript 将动态图像与HTML5 WebGL 360度全景查看器和Codeigniter中的Three.js集成

Javascript 将动态图像与HTML5 WebGL 360度全景查看器和Codeigniter中的Three.js集成,javascript,php,html,codeigniter,360-panorama-viewer,Javascript,Php,Html,Codeigniter,360 Panorama Viewer,如果您只需复制和粘贴文档中的可用代码,并将360图像放置在索引文件旁边,然后在浏览器中打开,Panorama 360 Viewer便可找到并易于使用。但是,有没有一种方法可以动态地从数据库中获取图像,并在视图中呈现360个图像,如下所示() panorama viewer文件中给出的代码在panorama数组中获取图像,如下所示 var panoramasArray = ["01.jpg","02.jpg","03.jpg","04.jpg","05.jpg","06.jpg"]; var p

如果您只需复制和粘贴文档中的可用代码,并将360图像放置在索引文件旁边,然后在浏览器中打开,Panorama 360 Viewer便可找到并易于使用。但是,有没有一种方法可以动态地从数据库中获取图像,并在视图中呈现360个图像,如下所示()

panorama viewer文件中给出的代码在panorama数组中获取图像,如下所示

var panoramasArray = ["01.jpg","02.jpg","03.jpg","04.jpg","05.jpg","06.jpg"];
var panoramaNumber = Math.floor(Math.random()*panoramasArray.length);

如果我们必须只显示一个图像怎么办?是否有人尝试从数据库中动态获取图像,并使用360 viewer渲染视图?。我看到了一条没有答案的线索,但没有人回答这个问题。

对于许多Codeigniter开发人员和那些一直在开发房地产网站的人来说,他们要么想要,要么已经尝试,但未能将360 image viewer集成到他们的网站中。这是我到目前为止所做和学到的练习

它是如何工作的?

  • 上传360图像
  • 从数据库中获取360幅图像
  • 显示/渲染视图
  • 我们需要什么?

    • 控制器中用于上传360图像的功能
    • 模型中用于保存和获取360幅图像列表的函数
    • 调用视图以显示图像的函数
    • 显示360图像的标记页面,其中包含所有JavaScript
    这是我上传360张图片的观点,这只是一个带有文件输入字段的表单

    public function upload_360_images()
    {
        if($this->session->userdata['id'] && $this->session->userdata['type']=='user')
        {
            if($_FILES)
            {
                if(isset($_FILES['files'])){
                    $data['errors']= array();
                    $extensions = array("jpeg","jpg","png");
    
                    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
    
                        $file_name = $key.$_FILES['files']['name'][$key];
                        $file_size =$_FILES['files']['size'][$key];
                        $file_tmp =$_FILES['files']['tmp_name'][$key];
                        $file_type=$_FILES['files']['type'][$key];
                        /*$file_ext=explode('.',$_FILES['image']['name'][$key]) ;
                        $file_ext=end($file_ext);*/
                        $i=1;
                        if($file_size > 7097152){
                            $data['errors'][$i]='File '.$i.' size must be less than 7 MB';
                            $i++;
                        }
    
                        $desired_dir="uploads";
                        if(empty($data['errors'])==true){
                            if(is_dir($desired_dir)==false){
                                mkdir("$desired_dir", 0700);        // Create directory if it does not exist
                            }
                            if(is_dir("$desired_dir/".$file_name)==false){
                                move_uploaded_file($file_tmp,"uploads/".$file_name);
                                $this->post_model->add360Image('property_360_images',$file_name,$this->uri->segment(3));
                            }else{                                  //rename the file if another one exist
                                $new_dir="uploads/".$file_name.time();
                                rename($file_tmp,$new_dir) ;
                            }
    
                        }else{
                            $data['contact']=$this->admin_model->getContactDetails();
                            $data['images']=$this->post_model->getProperty360Images($this->uri->segment(3));
                            $data['title']='My Profile Image';
                            $this->load->view('site/static/head',$data);
                            $this->load->view('site/static/header');
                            $this->load->view('site/content/upload_360_images');
                            $this->load->view('site/static/footer');
                            $this->load->view('site/static/footer_links');
                        }
                    }
                    if(empty($data['errors']))
                    {
                        redirect(base_url().'dashboard');
                    }
                    else
                    {
                        $data['contact']=$this->admin_model->getContactDetails();
                        $data['images']=$this->post_model->getProperty360Images($this->uri->segment(3));
                        $data['title']='My Profile Image';
                        $this->load->view('site/static/head',$data);
                        $this->load->view('site/static/header');
                        $this->load->view('site/content/upload_360_images');
                        $this->load->view('site/static/footer');
                        $this->load->view('site/static/footer_links');
                    }
                }
    
            }
            else
            {
                $data['contact']=$this->admin_model->getContactDetails();
                $data['images']=$this->post_model->getProperty360Images($this->uri->segment(3));
                $data['title']='My Profile Image';
                $this->load->view('site/static/head',$data);
                $this->load->view('site/static/header');
                $this->load->view('site/content/upload_360_images');
                $this->load->view('site/static/footer');
                $this->load->view('site/static/footer_links');
            }
    
        }
        else
        {
            redirect(base_url().'user/login');
        }
    
    }
    
    上面是我的控制器功能,它上载360图像并将名称保存在数据库中。没什么特别的,我没有使用CI上传库

    这是我的数据库表,用于存储360个图像名称

    public function property_detail()
    {
    
        $id=$this->uri->segment(3);
        $this->property_model->incPageViewById($id);
        $data['contact']=$this->admin_model->getContactDetails();
        $data['section_fields']=$this->admin_model->getSectionFields('property_sections');
        $data['property']=$this->property_model->getPropertyById($id);
        // Get 360 Images list of this property based on ID
        $data['images360']=$this->post_model->getProperty360Images($id);
        $data['profile']=$this->property_model->getFieldsById($id);
        $data['types']=$this->admin_model->getAll('property_types');
    
        $data['similar']=$this->property_model->getSimilarPropertiesById($data['property'][0]['posted_by']);
        $data['popular']=$this->property_model->getAllProperties(0,0);
        if($this->isLoggedIn())
        {
            $data['favorites']=$this->property_model->getMyFavorites($this->session->userdata['id']);
            $data['is_favorite']=$this->property_model->isFavorite($id,$this->session->userdata['id']);
        }
    
        $data['posted_by']=$this->property_model->getPostedByDetails($id);
        $data['comments']=$this->property_model->getCommentsById($id);
        if($_POST)
        {
            $config=array(
                array(
                    'field'     => 'name',
                    'label'     => 'Name',
                    'rules'     => 'trim|required',
                ),
                array(
                    'field'     => 'email',
                    'label'     => 'Email',
                    'rules'     => 'trim|required',
                ),
                array(
                    'field'     => 'comment',
                    'label'     => 'Comment',
                    'rules'     => 'trim|required',
                )
            );
            $this->form_validation->set_rules($config);
            if($this->form_validation->run()==false)
            {
                $data['errors']=validation_errors();
                $data['title']=$data['property'][0]['title'];
                $this->load->view('site/static/head',$data);
                $this->load->view('site/static/header');
                $this->load->view('site/content/property_detail');
                $this->load->view('site/static/footer');
                $this->load->view('site/static/footer_links');
            }
            else
            {
                $this->property_model->addComment($_POST,$id);
                $data['success']='Comment posted successfully';
                $data['comments']=$this->property_model->getCommentsById($id);
                $data['title']=$data['property'][0]['title'];
                $this->load->view('site/static/head',$data);
                $this->load->view('site/static/header');
                $this->load->view('site/content/property_detail');
                $this->load->view('site/static/footer');
                $this->load->view('site/static/footer_links');
            }
        }
        else
        {
            $data['title']=$data['property'][0]['title'];
            $this->load->view('site/static/head',$data);
            $this->load->view('site/static/header');
            $this->load->view('site/content/property_detail');
            $this->load->view('site/static/footer');
            $this->load->view('site/static/footer_links');
        }
    
    }
    
    上面是控制器函数,它从模型中获取所有数据并调用视图来呈现页面。您可以在控制器功能中看到以下几行

    // Get 360 Images list of this property based on ID
    $data['images360']=$this->post_model->getProperty360Images($id);
    
    从模型中获取360个图像的列表。现在在property detail视图中,我再次调用在