Я отображаю страницу сведений об объекте недвижимости, как показано ниже (доступ к ней можно получить по адресу Здесь)
У меня есть слайдер изображений и просмотрщик изображений 360. В настоящее время пользователь загружает оба типа изображений вручную, то есть обычные изображения из одного интерфейса и 360 изображений из другого интерфейса. Я проверяю, есть ли в собственности 360 изображений, и показываю их с помощью средства просмотра панорам.
Я использую следующий контроллер для загрузки 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 и определял характер изображения с помощью некоторого алгоритма обнаружения, а затем отображал изображение в том же слайдере изображения, который я использую для статические/простые изображения.
Исследования
Я прочитал эту ветку в Stackoverflow, которая имеет небольшой смысл в чтении метаданных файла с использованием EXIF, но это делает этот процесс довольно ручным.
Вопрос
Я хочу автоматизировать чтение этого изображения, используя его в моем коде загрузки изображения php или написать этот алгоритм обнаружения в функции, которая получает имя изображения в качестве параметра и возвращает тип изображения как обычный или 360. На основе этого возврата я могу легко визуализировать представления. Итак, мой вопрос: как сделать это обнаружение в php?