singlepost

PHP загрузка изображений << На главную или назад  

Перейдем к делу.

Мне надо сделать загрузку скриншотов от пользователя. Но они должны быть ограниченного размера – 640×480 (это обязательный размер, изображение растягивается или сжимается если не влезает, если не те пропорции – добавляется кайма). И тут я сталкиваюсь с проблемой.
Я не знаю, как это осуществить. Просто загрузку для меня сделать реально, но как сделать все эти операции с изображением (обрезание, растягиваение, кайма и тд) и заменить старый файл на сервере? Через GD как делать – не знаю как сохранить полученное изображение. Помогите, пожалуйста.

24 ответов в теме “PHP загрузка изображений”

  1. 24
    Денис Боенсков ответил:

    №22 … Ну вот… а мы тут распинались ))))

    №24
    >> //www.php.net/manual/en/
    Видимо, это еще рано предлагать. Сначала //www.php.ru/manual/

  2. 23
    Александр Курганов ответил:

    спасибо за ссылки, но возник вопрос
    что это вообще за массив $FILES?

  3. 22
    Александр Курганов ответил:

    и еще вопрос. move_uploaded_file работает асинхронно или нет?

  4. 21
    Денис Федоренко ответил:

    Не понял. Ты же писал, что в состоянии загрузить файл?
    Вообще, название массива соответствует тому, для чего он предназначен.

    > move_uploaded_file работает асинхронно или нет?

    А в PHP вообще что-нибудь асинхронно работает?

    Короче, вот тебе необходимый и достаточный набор ссылок:
    //www.php.net/manual/en/
    //www.google.ru/
    Освой это для начала, а потом уже вопросы задавай.

  5. 20
    Денис Федоренко ответил:

    2 Александр:

    Кстати, была статья на хабре про безопасную загрузку изображений. Там, в общем-то, все описано.

    //habrahabr.ru/blogs/php/44610/
    //habrahabr.ru/blogs/php/44615/

    P.S. Тема 100 раз изъезжанная вдоль и поперек, так что учись гуглить.

  6. 19
    Александр Курганов ответил:

    а разве get_image_size работает с файлами на компе клиента?

  7. 18
    Александр Курганов ответил:

    ступил.

  8. 17
    Денис Федоренко ответил:

    #11

    Подключи диалап и проверь :) )

    #12

    Да, протупил. Удаляется.

  9. 16
    Денис Боенсков ответил:

    №10
    upload_max_filesize для объемных файлов, которые "сожрут" диск и трафик, а для Вашего изображения добавить еще проверку imagesx|sy

  10. 15
    Александр Курганов ответил:

    > при обнаружении

    а как мне обнаружить это проклятье?

  11. 14
    Денис Федоренко ответил:

    upload_max_filesize как бы по умолчанию не должен превосходить 2мб, если конечно сервер конфигурировал не дятел.
    imagesx/sy работает уже с созданным ресурсом изображения, т.е. оно будет загружено в память. Где логика?
    Пользоваться надо getimagesize, тем более эта функция в состав GD не входит.

  12. 13
    Денис Федоренко ответил:

    #15

    //ru.php.net/getimagesize

  13. 12
    Денис Боенсков ответил:

    #16 >>get_image_size
    А, да! Теперь я протупил )))

  14. 11
    Александр Курганов ответил:

    хм. а есть ли другой способ обойти эту дыру?

  15. 10
    Денис Федоренко ответил:

    Есть какие-то расширения для работы с изображениями на стороне клиента, но это не кроссбраузерно.
    А так, flash-ем можно.

  16. 9
    Денис Боенсков ответил:

    К вопросу №3
    php.ini
    параметр upload_max_filesize

  17. 8
    Денис Федоренко ответил:

    > и тогда будет поздно.

    Что поздно? Прекращай работу скрипта при обнаружении такой загрузки, не забыв удалить ее из tmp.

  18. 7
    Денис Федоренко ответил:

    > параметр upload_max_filesize

    Денис, я вам сделаю пустое изображение размером 100500×100500 такое, которое будет занимать меньше, чем ваш upload_max_filesize

  19. 6
    Александр Курганов ответил:

    ни флэш, ни яву не знаю.
    кстати, см. старый загрузчик фотографий вконтакте – сомневаюсь, что там фотография сначала полностью на серв загружается.

  20. 5
    Денис Боенсков ответил:

    >>не забыв удалить ее из tmp.
    файл сам удалится из tmp по окончании работы скрипта

  21. 4
    Александр Курганов ответил:

    и еще проблемка – как загрузить в GD изображение, не загружая изображение на сервер? а то пользователь может загрузить изображение размером 100500×100500, и тогда будет поздно.

  22. 3
    Денис Федоренко ответил:

    Для изменения размера:
    //ru2.php.net/manual/en/function.imagecopyresiz...
    Для копирования части:
    //ru2.php.net/manual/en/function.imagecopy.php
    Для сохранения в любом популярном формате:
    //ru2.php.net/manual/en/function.imagejpeg.php
    //ru2.php.net/manual/en/function.imagepng.php
    //ru2.php.net/manual/en/function.imagegif.php

  23. 2
    Денис Федоренко ответил:

    > _загрузить_ в GD изображение, _не загружая_ изображение на сервер

    Противоречивость мыслей чувствуешь?
    Если работать только с php – никак.

  24. 1
    Александр Курганов ответил:

    Тфу ты, забыл выразить саму проблему. Я знаю, как в GD сохранить изображение, но ее средствами, насколько я понял, можно сохранить лишь в формат WBMP. а надо JPEG или еще лучше – PNG.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.