Добрый день,
Есть скрипт php - выбираем фотку, на нее накладывается фон и в таком виде все сохраняется. Проблема в том, что вертикальные фотографии разворачивает в горизонт. Мои познания в php чуть выше нулевых
function create_thumbnails($user_photo_path) {
$user_photo_path = substr($user_photo_path,27);
$frames = array(
"/imageupload_new/frames/imgoing.png",
// "/imageupload_new/frames/iwas.png"
);
$ready_images = array();
$counter = 1;
foreach($frames as $choosed_frame_path) {
// фон
$template = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'] . "/imageupload_new/background.jpg");
// фото
$info = getimagesize($_SERVER['DOCUMENT_ROOT'] . $user_photo_path);
$user_photo_width = $info[0];
$user_photo_height = $info[1];
$type = $info[2];
$filename = $_SERVER['DOCUMENT_ROOT'] . $user_photo_path;
switch ($type) {
case 1:
$user_photo = imageCreateFromGif($filename);
imageSaveAlpha($user_photo, true);
break;
case 2:
$user_photo = imageCreateFromJpeg($filename);
break;
case 3:
$user_photo = imageCreateFromPng($filename);
imageSaveAlpha($user_photo, true);
break;
}
if($user_photo_height > 400 && $user_photo_width > 400) {
// Размеры новой фотки.
$w = 400;
$h = 400;
if (empty($w)) {
$w = ceil($h / ($user_photo_height / $user_photo_width));
}
if (empty($h)) {
$h = ceil($w / ($user_photo_width / $user_photo_height));
}
$tmp = imageCreateTrueColor($w, $h);
if ($type == 1 || $type == 3) {
imagealphablending($tmp, true);
imageSaveAlpha($tmp, true);
$transparent = imagecolorallocatealpha($tmp, 0, 0, 0, 127);
imagefill($tmp, 0, 0, $transparent);
imagecolortransparent($tmp, $transparent);
}
$tw = ceil($h / ($user_photo_height / $user_photo_width));
$th = ceil($w / ($user_photo_width / $user_photo_height));
if ($tw < $w) {
imageCopyResampled($tmp, $user_photo, ceil(($w - $tw) / 2), 0, 0, 0, $tw, $h, $user_photo_width, $user_photo_height);
} else {
imageCopyResampled($tmp, $user_photo, 0, ceil(($h - $th) / 2), 0, 0, $w, $th, $user_photo_width, $user_photo_height);
}
$user_photo = $tmp;
}
if($user_photo_height < 400) {
$y_margin = ceil((400-$user_photo_height)/2);
} else {
$y_margin = 0;
}
if($user_photo_width < 400) {
$x_margin = ceil((400-$user_photo_width)/2);
} else {
$x_margin = 0;
}
// склейка фото и фона
imagecopy($template,$user_photo,$x_margin,$y_margin,0,0,$user_photo_width,$user_photo_height);
Код, естественно, не весь привел.
Как решить эту проблему? Готов материально вознаградить))