<?php
if (count($_POST) > 0 && isset($_POST['received_image'])) {
$image_correct = false; // Если при загрузке изображения возникли проблемы, не показываем html разметку для изображений
// Загружаем изображение на сервер
$url = $_POST['received_image'];
unset($_POST['received_image']);
$image = file_get_contents($url);
// Получаем расширение загружаемого файла для последующей проверки
$explode_file = explode('.', $url);
$extension_file = array_pop($explode_file);
if ($extension_file == 'bmp' || $extension_file == 'gif' || $extension_file == 'jpg' || $extension_file == 'jpeg') {
$image_correct = true;
echo '<div class="alert alert-success" role="alert">Изображение загружено</div>';
$filename = preg_replace('"\.(bmp|gif|jpg|jpeg)$"', '.png', $url); // Заменяем расширение фала на *.png
$prefix = str_replace(['-', ' ', ':'], ['_', '-', '_'], date("Y-m-d H:i:s")); // Создаем префикс к файлу, что бы избежать перезаписи файла
$new_name = $prefix . basename($filename); // Формируем уникальное имя для файла
$new_name_original = 'ORIGINAL_' . $new_name; // Префикс для полученного изображения ДО обработки
file_put_contents($new_name_original, $image); // сохраняем полученный файл в папку, где лежит скрипт
$info = getimagesize($new_name_original);
// Выбираем тип изображения
switch ($info[2]) {
case 1:
$tmp = imageCreateFromGif($new_name_original);
break;
case 2:
$tmp = imageCreateFromJpeg($new_name_original);
break;
case 3:
$tmp = imageCreateFromPng($new_name_original);
break;
}
$width = $info[0];
$height = $info[1];
$prepared_image = $tmp;
// Получаем отзеркаленное по вертикали изображение
$crop_image = imagecrop($prepared_image, ['x' => 0, 'y' => 0, 'width' => $width / 2, 'height' => $height]);
imageflip($crop_image, IMG_FLIP_HORIZONTAL); // Отображаем зеркально
imagecopymerge($prepared_image, $crop_image, $width / 2, 0, 0, 0, $width, $height, 100); // Объединяем изображения
// Сохраняем полученный результат в отдельный файл с префиксом 'PROCESSED'
$new_name_processed = 'PROCESSED_' . $new_name; // Префикс для полученного изображения ПОСЛЕ обработки
file_put_contents($new_name_processed, $image);
imagejpeg($prepared_image, $new_name_processed);
// очищаем память
imagedestroy($prepared_image);
imagedestroy($crop_image);
} else {
echo '<div class="alert alert-danger" role="alert">Указанная ссылка имеет недопустимый формат.
К загрузке разрешаются изображения с расширениями: *.bmp, *.gif, *.jpg, *.jpeg.</div>';
unset($_POST['received_image']);
}
} elseif (count($_POST) > 0) {
echo '<div class="alert alert-danger">Сбой при загрузке изображения</div>';
}
?>