Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как сделать минимальный размер изображения?

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


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

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

Aveen - 30 апреля 2016 14:41 - Юзер

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

joydo
4

171 | 31

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

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

mastodontoff
5

106 | 26

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

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

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

joydo
4

171 | 31

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

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

joydo
4

171 | 31

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
218

2171 | 930

vitnet - 1 мая 2016 12:33 - Эксперт

$widths = getimagesize(...);

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

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

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

joydo
4

171 | 31

joydo - 1 мая 2016 07:21 - Юзер

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

joydo
4

171 | 31

joydo - 1 мая 2016 19:13 - Юзер

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

joydo
4

171 | 31

joydo - 1 мая 2016 18:11 - Юзер

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

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

vitnet
218

2171 | 930

vitnet - 2 мая 2016 09:58 - Эксперт

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

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

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

joydo
4

171 | 31

joydo - 2 мая 2016 10:00 - Юзер

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

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

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