Вы наверно сталкивались с показом аватарки группы, состоящей из нескольких аватарок участников. Если пойти по пути создания универсального скрипта, вас будет подстерегать множество "подводных камней", например, изображения могут быть разного размера, разных соотношений сторон, разного фонового цвета. Данный скрипт пытается решить все эти проблемы.
<form enctype='multipart/form-data' method='POST'>
Изображение1: <input type='file' name='p[]' size='45' accept="image/*"><br>
Изображение2: <input type='file' name='p[]' size='45' accept="image/*"><br>
Изображение3: <input type='file' name='p[]' size='45' accept="image/*"><br>
Изображение4: <input type='file' name='p[]' size='45' accept="image/*"><br>
<input type='submit' value='Создать новое изображение'>
</form>
<?
if(!empty($_FILES['p']['tmp_name'])){
$width = $height = 512; // размер результата
$resImage = imagecreatetruecolor($width, $height);
$f = $_FILES['p']['tmp_name'];
for ($i = 0; $i < count($f); $i++) {
$srcImage = imagecreatefromjpeg($f[$i]);
$srcWidth = imagesx($srcImage);
$srcHeight = imagesy($srcImage);
$x = ($i == 1 || $i == 2 ? $width / 2 : 0);
$y = ($i > 1 ? $height / 2 : 0);
$h2 = intval($height / 2);
$w2 = intval($width / 2);
imagecopyresampled($resImage, $srcImage, $x, $y, 0, 0, $w2, $h2, $srcWidth, $srcHeight);
imagedestroy($srcImage);
}
$fil='tmp.jpg'; // результат
imagejpeg($resImage, $filename, 100);
imagedestroy($resImage);
header('Content-Type: image/jpeg');
readfile($filename);
}
?>
Приведенный пример максимально упрощен и манипулирует только с 4-мя файлами JPEG - формата.
Смотрите также:
Всего за 499 рублей (~7$) Вы можете приобрести готовый скрипт объединения изображений, который поддерживает весь описанный функционал. Код скрипта реализован на PHP, полностью открытый и не использует никаких дополнительных библиотек.
© Copyright 2008-2021 by KDG