Хочется узнать, стоит ли его использовать? Нормальный ли он? Может что улучшить можно или стоит вообще другой поискать?
<?
if(empty($_POST)) {
?>
<form enctype="multipart/form-data" action="" method="POST">
<input name="image_1" type="file"><br>
<input name="image_2" type="file"><br>
<input name="image_3" type="file"><br>
<input name="image_4" type="file"><br>
<input name="image_5" type="file"><br>
<input name="image_6" type="file"><br>
<input type="submit" name="submit">
<input type="reset">
</form>
<?
}
else {
$max_width = 300;
$max_height = 300;
function image_upload($image, $name, $path, $max_width, $max_height) {
global $image_upload_result, $image_upload_filename;
/* Назначаем априори ошибку (чтобы не писать в скрипте каждый раз) */
$image_upload_result = 1;
/* Смотрим прикреплён ли к полю файл */
/* Если файл прикреплён */
if(isset($image['error']) AND $image['error'] == 0) {
/* Убеждаемся что файл есть ни что иное как изображение */
if (preg_match('{image/(.*)}is', $image['type'], $match)) {
/* Если файл является изображением, получаем информацию о изображении */
$info = getimagesize($image['tmp_name']);
// Сверяем размеры изображения с разрешённым размером
// Если размеры не совпадают
if($info[0] > $max_width OR $info[1] > $max_height) {
// Начинаем изменять размер изображения
// ========= РЕСАЙЗ НАЧАЛО =========
// Получаем соотношение сторон
$ratio = $info[0] / $info[1];
// Назначаем новые размеры для изображения
// Если ширина больше длинны...
// Сначала назначаем ширину
$width = $max_width;
// В соответствии с соотношением назначаем высоту
$height = intval($width / $ratio);
// Проверяем подошла ли под разрешение новая высота
// Если нет
if($height > $max_height) {
// Назначаем новую
$height = $max_height;
// А уже назначенную новую ширину подгоняем
$width = intval($max_height * $ratio);
}
// ========= РЕСАЙЗ КОНЕЦ =========
// Если размеры изображения соответствуют разрешённым
} else {
$width = $info[0];
$height = $info[1];
}
// Определяем формат изображения
$ext = strrchr($image['name'], '.');
// Назначаем новое имя файла
// Указываем путь, куда этот файл нужно положить
$new_name = $path.$name.$ext;
// Создаём шаблон для изображения
$newpic = imagecreatetruecolor($width, $height);
// Для каждого формата
$img = 0;
switch ( $info[2] ) {
case 1: $img = @imagecreatefromgif($image['tmp_name']) or $img = 0;
break;
case 2: $img = @imagecreatefromjpeg($image['tmp_name']) or $img = 0;
break;
case 3: $img = @imagecreatefrompng($image['tmp_name']) or $img = 0;
break;
}
if($img !== 0) {
imagecopyresampled($newpic, $img, 0, 0, 0, 0, $width, $height, $info[0], $info[1]);
// Создаём изображение
// Если изображение создано и загружено
if(imagejpeg($newpic, $new_name, 100)) {
// Меняем переменную результата с 1 на 2
$image_upload_result = 2;
$image_upload_filename = $name.$ext;
} else {
// echo '<br><br><font color="red">ОШИБКА! ФАЙЛ НЕ НА СЕРВЕРЕ</font>';
}
} else {
// echo '<br><br><font color="red">ОШИБКА! Файл не обработан.</font>';
}
} else {
// echo '<br><font color="red">Файл НЕ является изображением.</font>';
}
// Если поле пустое
} else {
// echo 'Файл из поля image_'.$i.' НЕ прикреплён.';
$image_upload_result = 0;
}
// На выходе получаем глобальную переменную $image_upload_result
// Если $image_upload_result = 0 - файл не был прикреплён
// Если $image_upload_result = 1 - файл не удалось загрузить из-за какой-то ошибки
// Если $image_upload_result = 2 - файл успешно загружен
}
// Прокручиваем все 10 полей
for($i = 1; $i < 11; $i++) {
echo '<div style="margin: 10px; padding: 10px; background: #EFEFEF; border: 1px solid #999999;">';
$name = (time() + $i).'_'.rand(10000,99999);
$path = '';
image_upload($_FILES['image_'.$i], $name, $path, $max_width, $max_height);
if($image_upload_result == 2) {
echo 'Изображение '.$_FILES['image_'.$i]['name'].' успешно загружено!';
echo '<br><img src="'.$image_upload_filename.'">';
}
elseif ($image_upload_result == 1) {
echo 'Не удалось загрузить файл: <b>'.$_FILES['image_'.$i]['name'].'</b>';
}
else {
}
echo '</div>';
}
}
?>