Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как сделать минимальный размер изображения?

Как сделать минимальный размер изображения?


     Общие вопросы по PHP, Хаки    1819

вопрос
Добрый день, как можно сделать запрет на загрузку файла по минимальному размеру? Т.е например минимальный размер 400px и если изображения меньше 400px выдавалась ошибка?
Спасибо!

Ответил: joydo


Решил проблему сам
После
    function getFileSize() {
        return $_FILES['qqfile']['size'];
    }

Вставить

    function getFileDimens() {
        return getimagesize($_FILES['qqfile']['tmp_name']);
    }

Далее
После

$size = $this->file->getFileSize();

Вставить
$widths = $this->file->getFileDimens();

Далее
Выводим ошибку
        if ($widths[1] < 650) {
             return $this->msg_error( $widths[1], 403 );
        }

У меня стоит $widths[1] - это выдает ошибкой размер, я поменяю на свой текст, кому понадобится меняйте на свой

Т.к через функцию getimagesize можно получить и ширину и высоту, то -> $widths[0] - ширина, $widths[1] - высота.

11 комментариев

Aveen
Юзер

Aveen - -

Можешь обыграть это, в админ-панеле -> настройки системы -> изображения, можешь задать максимальный размер 400px и те размеры, которые будут больше данного тобой - будут автоматически сжиматься до твоего размера 400px. Для реализации твоей идеи хватит тех инструментов, которые даны в админ-панеле. Автоматическое изменение размера для удаленных изображений называется, если не ошибаюсь

joydo
Юзер

joydo - -

Aveen,
Минимальные размеры и средние, у меня уже заданы для своих целей. И нужно именно чтобы нельзя было загружать меньше нужного размера т.к если загрузить меньше средней, то ломается логика на сайте (грубо говоря).

mastodontoff
Юзер

mastodontoff - -

Цитата: joydo
то ломается логика на сайте (грубо говоря).

Не понятно
Скрин предоставьте. Что ,где ломается.

joydo
Юзер

joydo - -

mastodontoff, это не важно + показать все равно не могу.
Суть в том что если грузить меньше, то качество будет на сайт не найс (если через css увеличивать).

joydo
Юзер

joydo - -

Нашел как сделать, но не могу понять, как передать информацию, о файле

В файле engine/classes/uploads/upload.class.php
После
        if ($size == 0) {
            return $this->msg_error( $lang['upload_error_5'], 403 );
        }

Вставить
        if ($widths[1] < 500) {
            return $this->msg_error( "размер $widths[1]", 405 );
        }

После
    $size = $this->file->getFileSize();

Вставить
    $widths = getimagesize(Вот тут ошибка, не могу понять, как передать файл сюда);

vitnet
PHP-developer

vitnet - -

$widths = getimagesize(...);

Найдите
    function getFileSize() {
        ...
}

Добавьте ниже
    function getFileDimens() {
        return ($this->from ? getimagesize($this->from) : 0);
}

Результат:
$widths = $this->file->getFileDimens();

joydo
Юзер

joydo - -

***Комментарий удален***

joydo
Юзер

joydo - -

По моей схеме, работает все отлично, но вот не могу пока понять, как передать информацию о загруженном файле в getimagesize
Т.к если вставлять url ссылки, с сервера, он берет картинку и передает нужную информацию.

joydo
Юзер

joydo - -

Цитата: vitnet
    function getFileDimens() {
        return ($this->from ? getimagesize($this->from) : 0);
}

Хм, вставлял по разному, но выдает все равно 0 и ошибку, на любой размер и больше нужного и меньше нужного

vitnet
PHP-developer

vitnet - -

Это потому что там 3 разны вывода:

1. FTP
2. Загрузка по URL
3. Загрузка с устройства

Я дал вам пример для 2 пункта.

joydo
Юзер

joydo - -

vitnet,
Ох, а я даже это и не учел) Спасибо)
И извиняюсь, нужно было сразу уточнить по поводу какой загрузки идет речь.

Похожие вопросы

наверх