Объясните, пожалуйста, как можно сжать фотографии файлового массива file[]. Все скрипты которые находил работают только для одного фото. Циклы не помогают
Я понимаю, но скрипт обрабатывает изображения в цикле. По типу $_FILES['file']['name'][$i]. $i увеличивается на '1' в цикле, в котором обрабатываются фото
Потренируйся на одном фото, которое уже лежит в папке, потом в цикле на несколько фото, потом уже на $_FILES. Использовал ImageMagick? Хоть что-то можешь показать?
В том то и дело что на одной картинке все получается. И не просто лежит, а во время загрузки; она копируется в папку с маленькими изображениями и в папку с несжатыми. Код пока показать не т.к. не с компа. ImageMagick не использовал
Попробуй ImageMagick и код показывай как сможешь. Может в нём что-то не учли, подскажем. Добавлено спустя 1 минуту 15 секунд: https://php.net/manual/ru/imagick.setimagecompressionquality.php
index.php Код (PHP): <meta charset="utf-8"> <table> <tr> <td valign=top width=600px;> <link href="../../../styles/main.css" rel="stylesheet"> <div style="margin:20px;"> <form method=POST action=index.php enctype=multipart/form-data> <p><input type="file" min="1" max="99" name="file[]" multiple="true" accept='image/*' /></p> <p><input type=submit name=add value='Добавить'> </p> </form> </div> <?php if ($_POST['add']) { $host=""; $user=""; $pass=""; $db_name=""; $link=mysql_connect($host,$user,$pass); mysql_select_db($db_name,$link); $filesize = count($_FILES['file']['name']); for ($i=0; $i<$filesize; $i++) { require 'config.php'; if(preg_match('/[.](jpg)|(gif)|(png)$/', //Ставим допустимые форматы изображений для загрузки $_FILES['file']['name'][$i])) { $filename = $_FILES['file']['name'][$i]; $source = $_FILES['file']['tmp_name'][$i]; $target = $path_to_image_directory . $filename; move_uploaded_file($source, $target); function createThumbnail($filename) { if(preg_match('/[.](jpg)$/', $filename)) { $im = imagecreatefromjpeg($path_to_image_directory . $filename); } else if (preg_match('/[.](gif)$/', $filename)) { $im = imagecreatefromgif($path_to_image_directory . $filename); } else if (preg_match('/[.](png)$/', $filename)) { $im = imagecreatefrompng($path_to_image_directory . $filename); } $ox = imagesx($im); $oy = imagesy($im); $nx = $final_width_of_image; $ny = floor($oy * ($final_width_of_image / $ox)); $nm = imagecreatetruecolor($nx, $ny); imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy); if(!file_exists($path_to_thumbs_directory)) { if(!mkdir($path_to_thumbs_directory)) { die("!"); } } imagejpeg($nm, $path_to_thumbs_directory . $filename); } createThumbnail($filename); } $sstr = "INSERT INTO `photos`(`name`,`autor`,`category`,`date`) VALUES ( \"{$_FILES['file']['name'][$i]}\" )"; $rez=mysql_query($sstr,$link); }; }; ?> </td></tr> </table> config.php Код (PHP): <?php $final_width_of_image = 300; $path_to_image_directory = '../../../img/photo/photos/'; $path_to_thumbs_directory = '../../../img/photo/photos/min/'; ?> p.s. На основе скрипта, который нашёл в гугле Подсказка от модератора: Любой код или текст конфигурации пишите между тегом [code=php] и [/code]. Используйте отступы в коде для форматирования текста. Это помогает быстрее понять вас, увеличивает шанс на получение ответа. Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
mysql удалили в PHP7, лучше использовать mysqli или PDO. for заменить на foreach, он переберёт массив. надо делать отладку скрипта, нужно перепроверить каждую строку, какие данные и куда идут, надо перепроверить все пути, что возвращает move_uploaded_file и другие функции, чтобы знать всё ли идёт нормально. Инструкции по отладке: http://phpfaq.ru/debug https://netbeans.org/kb/docs/php/debugging_ru.html
Ты используешь хостинг на котором нет ImageMagick? Можно вызвать phpinfo(); и посмотреть, есть он или нет.
Ты используешь функцию https://php.net/manual/en/function.imagejpeg.php из GD, третий аргумент у imagejpeg отвечает за качество, добавь его в код.
Ну ладно - перемешан HTML и php, но зачем же функцию в цикле объявлять? Вы же себе жизнь осложняете, цикл становится трудновоспроизводимым при чтении. А так, очевидных ошибок нету, надо искать ошибки в логике с помощью отладки, как описал denis01 Добавлено спустя 4 минуты 43 секунды: Кстати, даже проверил. Это вообще не должно работать, должно ошибку выдавать Cannot redeclare
По поводу Image Magick. Поддержка хостинга дала мне ссылку на страницу по настройке (http://www.1gb.ru/1252), содержание которой я понимаю, мягко говоря, смутно.
Ты просто ждёшь готовый код? Тут многое насоветовали, чтобы ты собрал код для решения своей задачи, но ты ничего не сделал.