在PHP中自动检测360自然的图像

Mal*_*sar 5 php codeigniter image 360-panorama-viewer 360-virtual-reality

我正在渲染下面的Property Detail页面(可以在这里访问) 在此输入图像描述

我有一个图像滑块和一个360图像查看器.目前,用户手动上传两种类型的图像,即来自一个界面的普通图像和来自其他界面的360图像.我检查属性是否有360个图像并使用全景查看器显示它们.

我使用以下Controller上传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');
    }

}
Run Code Online (Sandbox Code Playgroud)

请忽略长码,这段代码来自一个制作,所以我必须提出很多检查和条件.

问题 现在我的雇主要我使用单一界面上传普通和360图像,并使用一些检测算法检测图像的性质,然后在我用于静态/普通图像的同一图像滑块中显示图像.

研究

我在Stackoverflow上阅读了这个线程,这对于使用EXIF工具读取文件的元数据有点意义,但这使得这个过程非常简单.

我希望自动化图像读取在我的php图像上传代码中使用它,或者将该检测算法写入一个函数中,该函数将图像名称作为参数并返回图像类型为plain或360.基于该返回,我可以轻松地呈现视图.所以我的问题是如何在PHP中进行检测?

Ter*_*den 4

根据Facebook 360 Group 的说法:

目前还没有将照片标记为包含 360 度内容的标准。

建议您寻找EXIF标签

Projection Type : equirectangular

您还可以寻找

Use Panorama Viewer : True

这两个标签出现在我用 LG 360 拍摄的照片上。