Загрузка изображения .bmp с использованием библиотеки загрузки CodeIgniter 0 ширина и высота - PullRequest
0 голосов
/ 26 марта 2012

После этих строк:

...
$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 на 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] => 

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

1 Ответ

2 голосов
/ 26 марта 2012

Изменена функция system / library / 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;
    }

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

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

...