2012-03-26 2 views
0

После этих строк:UPLOADING .bmp изображения с использованием CodeIgniter в загрузки библиотеки 0 ширина и высота

... 
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg'; 
... 
$this->load->library('upload', $config); 
$this->upload->do_upload(); 

.bmp файл был успешно загружен на хост. Однако, получение ширина и высота возвращается в загруженных Дейтах и ​​пустое значение:

$imgdata = $this->upload->data(); 
print_r($imgdata); 

То есть, $imgdata['image_width'] и $imgdata['image_height'] не имеют никакого значения вообще.

Я попытался загрузить другие типы файлов изображений, кроме bmp. Его высота и ширина действительны.

Почему это происходит только с изображением .bmp? И как мне это исправить?


РЕДАКТИРОВАТЬ:

Вот содержимое $imgdata Upon print_r();

[file_name] => 58ea3c1f14b45d7c1c2c0e0c1920af772b9ebf09.bmp 

[file_type] => image/bmp 

[file_path] => path/ 

[full_path] => path/58ea3c1f14b45d7c1c2c0e0c1920af772b9ebf09.bmp 

[raw_name] => 58ea3c1f14b45d7c1c2c0e0c1920af772b9ebf09 

[orig_name] => 58ea3c1f14b45d7c1c2c0e0c1920af772b9ebf09.bmp 

[client_name] => samplebmp.bmp 

[file_ext] => .bmp 

[file_size] => 2484.45 

[is_image] => 

[image_width] => 

[image_height] => 

[image_type] => 

[image_size_str] => 

Почему файл изображения не распознается как изображение? Функция

+0

Я думаю, вы должны добавить mime-тип, чтобы распознать bmp как изображение – safarov

+0

Проверьте это сообщение: http://stackoverflow.com/questions/7495407/uploading-in-codeigniter-the-filetype-you-are-attempting- к загрузке-это-не-алло – Ben

ответ

2

Модифицированная система/библиотеки/upload.php is_image(), чтобы:

public function is_image() 
    { 
     // IE will sometimes return odd mime-types during upload, so here we just standardize all 
     // jpegs or pngs to the same file type. 

     $png_mimes = array('image/x-png'); 
     $jpeg_mimes = array('image/jpg', 'image/jpe', 'image/jpeg', 'image/pjpeg'); 
       $bmp_mimes = array('image/bmp'); 

     if (in_array($this->file_type, $png_mimes)) 
     { 
      $this->file_type = 'image/png'; 
     } 

     if (in_array($this->file_type, $jpeg_mimes)) 
     { 
      $this->file_type = 'image/jpeg'; 
     } 

       if (in_array($this->file_type, $bmp_mimes)) 
     { 
      $this->file_type = 'image/bmp'; 
     } 

     $img_mimes = array(
          'image/gif', 
          'image/jpeg', 
          'image/png', 
                 'image/bmp' 
         ); 

     return (in_array($this->file_type, $img_mimes, TRUE)) ? TRUE : FALSE; 
    } 

Я добавил BMP тип мим так, что ДИ может распознать .bmp как файл изображения. Обратите внимание, что я предполагаю, что image/bmp будет типом mime, возвращаемым во всех браузерах (я тестирую только в Firefox и Google Chrome). В случае различий, пожалуйста, увеличьте значения массива, похожие на jpeg и png mimes.

После модификаций $ imgdata ['image_width'] и $ imgdata ['image_height'] возвращает допустимые значения.