Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 2
Регистрация: 13.03.2012
Сообщений: 27

Дублирование загруженных изображений с изменением размеров

19.08.2012, 21:04. Показов 1529. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, не могу разобраться как дублировать загружаемую картинку, и изменить её размер:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
if (empty($_FILES['upload']['name']))
            {
            //если переменной не существует (пользователь не отправил    изображение),то присваиваем ему заранее приготовленную картинку с надписью    "нет аватара"
            $pic    = "pic/no-pic.jpg"; //можете    нарисовать net-avatara.jpg или взять в исходниках
            }          
else 
            {
 
            //иначе - загружаем изображение пользователя
            $path_to_90_directory    = 'pic/';//папка,    куда будет загружаться начальная картинка и ее сжатая копия          
         
            if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['upload']['name']))//проверка формата исходного изображения
                      {                 
                               $filename =    $_FILES['upload']['name'];
                               $source =    $_FILES['upload']['tmp_name']; 
                               $target =    $path_to_90_directory . $filename;
                               move_uploaded_file($source,    $target);//загрузка оригинала в папку $path_to_90_directory           
         if(preg_match('/[.](GIF)|(gif)$/',    $filename)) {
                     $im    = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем    изображение в этом же формате. Необходимо для последующего сжатия
                     }
                     if(preg_match('/[.](PNG)|(png)$/',    $filename)) {
                     $im =    imagecreatefrompng($path_to_90_directory.$filename) ;//если    оригинал был в формате png, то создаем изображение в этом же формате.    Необходимо для последующего сжатия
                     }
                     
                     if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/',    $filename)) {
                               $im =    imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же    формате. Необходимо для последующего сжатия
                     }           
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ    ВЗЯТО С САЙТА www.codenet.ru           
// Создание квадрата 90x90
            // dest - результирующее изображение 
            // w - ширина изображения 
            // ratio - коэффициент пропорциональности           
$w    = 200;  //    квадратная 90x90. Можно поставить и другой размер.          
// создаём исходное изображение на основе 
            // исходного файла и определяем его размеры 
            $w_src    = imagesx($im); //вычисляем ширину
            $h_src    = imagesy($im); //вычисляем высоту изображения
                     // создаём    пустую квадратную картинку 
                     // важно именно    truecolor!, иначе будем иметь 8-битный результат 
                     $dest = imagecreatetruecolor($w,$w);           
         //    вырезаем квадратную серединку по x, если фото горизонтальное 
                     if    ($w_src>$h_src) 
                     imagecopyresampled($dest, $im, 0, 0,
                                         round((max($w_src,$h_src)-min($w_src,$h_src))/2),
                                      0, $w, $w,    min($w_src,$h_src), min($w_src,$h_src));           
         // вырезаем    квадратную верхушку по y, 
                     // если фото    вертикальное (хотя можно тоже серединку) 
                     if    ($w_src<$h_src) 
                     imagecopyresampled($dest, $im, 0, 0,    0, 0, $w, $w,
                                      min($w_src,$h_src),    min($w_src,$h_src));           
         // квадратная картинка    масштабируется без вырезок 
                     if ($w_src==$h_src) 
                     imagecopyresampled($dest,    $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);           
$date=time();    //вычисляем время в настоящий момент.
            imagejpeg($dest,    $path_to_90_directory.$date.".jpg");//сохраняем    изображение формата jpg в нужную папку, именем будет текущее время. Сделано,    чтобы у аватаров не было одинаковых имен.          
//почему именно jpg? Он занимает очень мало места + уничтожается    анимирование gif изображения, которое отвлекает пользователя. Не очень    приятно читать его комментарий, когда краем глаза замечаешь какое-то    движение.          
$pic    = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара. 
 
$delfull    = $path_to_90_directory.$filename; 
            unlink    ($delfull);//удаляем оригинал загруженного    изображения, он нам больше не нужен. Задачей было - получить миниатюру.
            }
            else 
                     {
                                //в случае    несоответствия формата, выдаем соответствующее сообщение
                     exit ("Аватар должен быть в    формате <strong>JPG,GIF или PNG</strong>");
                             }
            //конец процесса загрузки и присвоения переменной $avatar адреса    загруженной авы
            }
Подскажите, как создать копию загружаемой картинки, переместить ее в директорию photo/ и изменить ее размер до 300*300?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.08.2012, 21:04
Ответы с готовыми решениями:

Вывод изображений с изменением размеров
Привет, ребята! Помогите разобраться с кодом. Код, который предоставлен ниже, помогает выводить изображения с изменением размера. Например:...

Изменение размеров элементов управления с изменением размеров формы
подскажите, как сделать так чтобы размер элементов управления изменялся пропорционально размерам формы. всё дело в том что я не знаю на...

Поворот загруженных изображений
Необходимо загруженное изображение формата tga повернуть на 90 градусов по часовой стрелке. Есть ли в OpengGL стандартные функции для этого?

1
abelx16
04.12.2012, 20:24
Прочитай это http://php.su/phphttp/?uploads
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2012, 20:24
Помогаю со студенческими работами здесь

Вывести несколько загруженных изображений
Доброго времени суток! для доски объявлений, загружается несколько изображений, как их вывести все &lt;h3...

Дублирование данных, с изменением одного поля
Добрый день! :wall: После ввода &quot;новых данных&quot; и нажатия &quot;дублирования записи&quot; необходимо, чтобы в ячейке ПЕРЕВОД встали новые...

Проблемы с изменением размеров томов
Нужно увеличить размер диска С. Насколько я понимаю, то для этого необходимо уменьшить размер расширенного раздела. Но как это сделать?...

Изменением размеров элементов GridView пальцами
Добрый день! Есть простая сетка grid = new Grid() { ColumnDefinitions = { ...

Обработка изображений. Изменение размеров изображений
Подскажите пожалуйста, как изменить размер изображения в MathCad. Какой код нужен для уменьшения/увеличения изображения?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru