Загрузка изображения фиксированного размера с помощью codeigniter, как?

Я использую класс загрузки файлов в codeigniter и могу успешно загружать изображения. Мой вопрос: как сделать так, чтобы пользователь загружал изображение только фиксированного размера, 600 на 360 пикселей, не больше и не меньше? Я попытался использовать массив данных загрузки, чтобы получить высоту и ширину изображения, и проверяю эти значения TRUE или FALSE. Если false, я передаю строку ошибки в представление, если true, я ничего не отображаю в представлении, но я не уверен, что оно работает правильно. Кто-нибудь может помочь с тем, как это сделать? Заранее спасибо!


person user1779397    schedule 21.04.2013    source источник


Ответы (2)


Вы можете использовать инструменты библиотеки GDI, чтобы узнать высоту и ширину изображения, а также другую информацию.

Например:

$imgInfo = getimagesize("/path/to/image.png");
if ($imgInfo[0] != 600) && $imgInfo[1] != 360){
   throw new Exception("Illegal image size");
}

http://www.php.net/manual/en/function.getimagesize.php

person Itai Sagi    schedule 21.04.2013

Вы можете использовать библиотеку обработки изображений в сочетании с библиотекой загрузки файлов.

Используя библиотеку загрузки файлов, вы можете:

  • убедитесь, что загруженные файлы имеют именно тот размер, который вам нужен:

И вы можете использовать библиотеку манипулирования изображениями для изменения размера загруженного изображения, если это необходимо, поэтому полное решение будет выглядеть так:

$fileInfo = $this->upload->data();

if( $fileInfo['width'] == 600 && $fileInfo['height'] == 300 ) {
    // do something
} else {
    // initiialize library
    $this->image_lib->resize();
}

Подробнее об этих библиотеках можно прочитать здесь:

http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html

person kav    schedule 21.04.2013