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

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


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

вопрос
Добрый день, как можно сделать запрет на загрузку файла по минимальному размеру? Т.е например минимальный размер 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 - 30 апреля 2016 14:41 -

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

joydo
Юзер

joydo - 30 апреля 2016 15:35 -

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

mastodontoff
Юзер

mastodontoff - 30 апреля 2016 18:37 -

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

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

joydo
Юзер

joydo - 30 апреля 2016 19:31 -

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

joydo
Юзер

joydo - 1 мая 2016 06:33 -

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

В файле 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 - 1 мая 2016 12:33 -

$widths = getimagesize(...);

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

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

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

joydo
Юзер

joydo - 1 мая 2016 07:21 -

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

joydo
Юзер

joydo - 1 мая 2016 19:13 -

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

joydo
Юзер

joydo - 1 мая 2016 18:11 -

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

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

vitnet
PHP-developer

vitnet - 2 мая 2016 09:58 -

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

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

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

joydo
Юзер

joydo - 2 мая 2016 10:00 -

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

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх