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

Как объединить две функции

25.03.2016, 21:28. Показов 1786. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть две функции

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// функция копирования файлов (включая вложеные) из папки $source в $res 
function copy_files($source, $res)
{ 
    $hendle = opendir($source); // opendir — Открывает дескриптор каталога
    while ($file = readdir($hendle)) { //readdir — Получает элемент каталога по его дескриптору    
        if (($file!=".")&&($file!="..")) { 
            if (is_dir($source."/".$file) == true) { 
                if(is_dir($res."/".$file)!=true) // is_dir — Определяет, является ли имя файла директорией
                    mkdir($res."/".$file, 0777); // mkdir — Создаёт директорию
                    
                    copy_files ($source."/".$file, $res."/".$file);
            } 
            else{ 
                if(!copy($source."/".$file, $res."/".$file)) //!copy — Не Копирует файл 
                {  
                    print ("при копировании файла $file произошла ошибка...<br>\n");  
                }// end if copy 
            }  
        } // else $file == .. 
    } // end while 
    closedir($hendle); //closedir — Освобождает дескриптор каталога
}
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
//Функция обрезки
 
function crop($file_input, $file_output, $crop = 'square',$percent = false) { //исходный($file_input) и конечный($file_output) файл,
    list($w_i, $h_i, $type) = getimagesize($file_input); //getimagesize — Получение размера изображения. определения типа файла
    if (!$w_i || !$h_i) {
        echo 'Невозможно получить длину и ширину изображения';
        return;
        }
        $types = array('','gif','jpeg','png');
        $ext = $types[$type];
        if ($ext) {
                $func = 'imagecreatefrom'.$ext;
                $img = $func($file_input);
        } else {
                echo 'Некорректный формат файла';
        return;
        }
    if ($crop == 'square') { //Если координаты обрезки не заданы, то обрезаем изображение до формы квадрата
        $min = $w_i;
        if ($w_i > $h_i) $min = $h_i;
        $w_o = $h_o = $min;
    } else {
        list($x_o, $y_o, $w_o, $h_o) = $crop; //Если же координаты существуют, то переносим их из массива в переменную и переводим проценты в пиксели
        if ($percent) {
            $w_o *= $w_i / 100;
            $h_o *= $h_i / 100;
            $x_o *= $w_i / 100;
            $y_o *= $h_i / 100;
        }
                if ($w_o < 0) $w_o += $w_i;
            $w_o -= $x_o;
        if ($h_o < 0) $h_o += $h_i;
        $h_o -= $y_o;
    }
    $img_o = imagecreatetruecolor($w_o, $h_o); //Теперь создаём новый файл, копируем кусок изображения по координатам, которые только что получили, и сохраняем этот кусок в файл. 
    imagecopy($img_o, $img, 0, 0, $x_o, $y_o, $w_o, $h_o);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);//imagejpeg — Выводит изображение в браузер или пишет в файл
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
Нужно, что бы скопированные изображения вставлялись в новую директорию уже в обрезанном виде. Подскажите, как это возможно сделать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.03.2016, 21:28
Ответы с готовыми решениями:

Хочу объединить две функции на одной странице (в одном файле)
Вопрос в том что у меня невыходит ответ на запрос, программа не выводит результать Код php такой &lt;html&gt; &lt;head&gt; ...

Как объединить эти функции?
Здравствуйте товарищи знатоки, помогите реализовать замыслы. Мне нужно объединить эти две функции, как стараюсь никак не получается. И...

Как объединить две функции?
Как объединить две функции? в public PartialViewResult Edit(int id) { Edit userCombined...

7
 Аватар для SanchO-SEK
61 / 23 / 7
Регистрация: 22.05.2012
Сообщений: 89
26.03.2016, 02:42
PHP вроде бы не позволяет создавать функцию в функции, но в Вашем случае почему бы не вызвать crop() внутри copy_files()? Это же возможно
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
26.03.2016, 10:28  [ТС]
Я это и имел в виду, только не как не могу это реализовать. Я всего недели две изучаю php
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
26.03.2016, 11:37
PHP
1
2
3
4
5
6
да просто вызывайте ф-ю по обрезанию файлов там, где уже есть имя файла
её откуда угодно вызывать можно
 
считать из диры файлы (без . ..):
$dir = '/path/to/my/dir';
$scanned_directory = array_diff(scandir($dir), array('..', '.'));
0
26.03.2016, 11:43

Не по теме:

Цитата Сообщение от SanchO-SEK Посмотреть сообщение
PHP вроде бы не позволяет создавать функцию в функции
С каких это пор :) Только к теме это не относится.

0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
26.03.2016, 11:56  [ТС]
Я так и сделал, в файле проверки загрузки файлов вызвал функцию обрезки, получил 3 ошибки на линии 35,36 и 38 :Warning: imagecreatetruecolor(): Invalid image dimensions in C:\OpenServer\domains\seocola\6\copy-file.php on line 60

Warning: imagecopy() expects parameter 1 to be resource, boolean given in C:\OpenServer\domains\seocola\6\copy-file.php on line 61

Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\OpenServer\domains\seocola\6\copy-file.php on line 63

Функция проверки

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
69
70
71
72
73
74
75
include ("6/copy-file.php");
function file_inspection($img)
{
//Проверка типа файла при загрузке file inspection
 $filename=$_FILES['file']['name'];
 $filetype=$_FILES['file']['type'];
 $filename = strtolower($filename);
 $filetype = strtolower($filetype);
 
 //проверьте, содержит PHP и убить его
 $pos = strpos($filename,'php');
 if(!($pos === false)) {
  die('error');
 }
 
 //Проверить не пустой ли файл
if ($img['name'] == '')
    {
        echo 'Файл не выбран';
        return;
    }
 
 //получить файл доб
 $file_ext = strrchr($filename, '.');
 
 
 //проверить , если его разрешено или нет
 $whitelist = array(".jpg",".jpeg",".gif",".png"); 
 if (!(in_array($file_ext, $whitelist))) 
 {
    die('не допускается расширение, пожалуйста, загрузите только изображения');
 }
 
 
 //проверить тип загрузки
 $pos = strpos($filetype,'image');
 if($pos === false) {
  die('error 1');
 }
 $imageinfo = getimagesize($_FILES['file']['tmp_name']); //getimagesize — Получение размера изображения
 if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime']      != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
   die('error 2');
 }
//проверить двойной тип файла (изображение с комментариями)
if(substr_count($filetype, '/')>1){
die('error 3');
}
 
echo '<form method="post" enctype="multipart/form-data">';
    echo '<input type="file" name="file" />'; //Если мы пишем input type="file" name="file", то данные передаются через глобальный массив $_FILES.
    echo '<input type="submit" value="Загрузить файл!" />'; //Если мы пишем input type="submit" или type="text", то данные передаются через глобальный массив $_POST.
    echo '</form>';
    
 // Перенаправление дирректории 
 $uploaddir = 'uploadbig/'.date("Y-m-d").'/' ;
 
if (file_exists($uploaddir)) {  //file_exists — Проверяет наличие указанного файла или каталога
} else {  
    mkdir( $uploaddir, 0777); //mkdir — Создаёт директорию 
} 
   
  //изменить имя изображения
 $uploadfile = $uploaddir . md5(basename($_FILES['file']['name'])).$file_ext;
 
  if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) //move_uploaded_file — Перемещает загруженный файл в новое место
  
  {
   
  } 
  else 
  {
   echo "error";
  }
  crop($uploadfile, 'uploadsmail', 250, 250, true); 
}
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
26.03.2016, 12:05
ну так зайдите в соответствующие файлы, смотрите ошибки на указанных строках, правьте, гуглите, снова правьте
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
26.03.2016, 12:36  [ТС]
Разобрался. Всем спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.03.2016, 12:36
Помогаю со студенческими работами здесь

Как объединить две функции?
Вот код: #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int reverse_number(int number) { int n = 0; while...

Как объединить эти две функции?
Как объединить эти две функции? void AnsiToUnicode(){ char* szAnsi = &quot;abcd1234你我他&quot;; int wcsLen = ::MultiByteToWideChar(CP_ACP,...

Как объединить две функции, используя template?
template &lt;class T&gt; T&amp; queue&lt;T&gt;::search(int in) { spis&lt;T&gt; *w = begin;// while (w != NULL) { if (w-&gt;info == in) return...

Как объединить две похожие функции в одну
Среда Visual Basic STUDIO’2010 Professional Имееи 2 функции - f_1() and f_2() , отличающиеся типом получаемых данных. Как...

Объединить две функции
Добрый день. возникла необходимость сделать 2 функции при нажатии на 1 кнопку (закрытие спойлера и перемотка страницы на заголовок, т.к....


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru