Все сервисы Хабра
Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
Закрыть
Задать вопрос
endraw
0
вклад
1
вопрос
5
ответов
0%
решений
Комментарии
Информация
Ответы
Вопросы
Комментарии
Подписки
Нравится
Изменить размер отдаваемого изображения на PHP?
endraw
@endraw
Автор вопроса
Дмитрий
,
Спасибо всем кто откликнулся, сделал вот так
// задание максимальной ширины и высоты
$n_width = $imgw;
$n_height = $imgh;
// получение новых размеров
list($width_orig, $height_orig) = getimagesize($nb_img_root . $row2['image']);
$ratio_orig = $width_orig/$height_orig;
if ($n_width/$n_height > $ratio_orig) {
$n_width = $n_height*$ratio_orig;
} else {
$n_height = $n_width/$ratio_orig;
}
$marginh = ($imgh - $n_height) / 2;
$image_p = imagecreatetruecolor($imgw, $imgh);
imagefill($image_p, 0, 0, 0xFFFFFF);
$image = imagecreatefromjpeg($nb_img_root . $row2['image']);
imagecopyresampled($image_p, $image, 0, $marginh, 0, 0, $n_width, $n_height, $width_orig, $height_orig);
Написано
более двух лет назад
Изменить размер отдаваемого изображения на PHP?
endraw
@endraw
Автор вопроса
вроде сделал при помощи imagecopyresampled
но как теперь сделать, что размер холста бы у всех одинаковый
$image_p = imagecreatetruecolor($n_width, $n_height);
$image = imagecreatefromjpeg($nb_img_root . $row2['image']);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $n_width, $n_height, $width_orig, $height_orig);
изменяет размер в пропорциях и получается что изображение не 180х180 а 180х105
как растянуть холст без растягивания изображения
пробовал Imagick, но он не работает, хотя в настройках php всё включил и даже перезагрузил сервак
Написано
более двух лет назад
Изменить размер отдаваемого изображения на PHP?
endraw
@endraw
Автор вопроса
картинку с наложенным текстом, но в оригинальном размере, а нужно изменить размер отдаваемого изображения
Написано
более двух лет назад
Изменить размер отдаваемого изображения на PHP?
endraw
@endraw
Автор вопроса
function nb_add_watermark($nb_img, $text, $font, $r = 128, $g = 128, $b = 128, $alpha = 110) {
//получаем ширину и высоту исходного изображения
$width = imagesx($nb_img);
$height = imagesy($nb_img);
//угол поворота текста
//$angle = -rad2deg(atan2((-$height),($width)));
$angle = 0;
//добавляем пробелы к строке
$text = " ".$text." ";
$c = imagecolorallocatealpha($nb_img, $r, $g, $b, $alpha);
//$size = (($width+$height)/2)*2/strlen($text);
$size = (($width+$height)/2)*2/45;
$box = imagettfbbox ( $size, $angle, $font, $text );
//$x = $width/2 - abs($box[4] - $box[0])/2;
//$y = $height/2 + abs($box[5] - $box[1])/2;
$x = -50;
$y = -5;
//записываем строку на изображение
imagettftext($nb_img, $size, $angle, $x, $y, $c, $font, $text);
return $nb_img;
}
$nb_img_root = '/var/www/site/data/www/site.ru/image/';
$nb_img2 = imagecreatefromjpeg($nb_img_root . $row2['image']);
//текст для наложения
$wt_text = ' TEST ' . $row['name'] . ' TEST' . "\n";
$wt_text .= $row['name'] . ' TEST ' . $row['name'] . "\n";
$nb_wt_image = nb_add_watermark($nb_img2, $wt_text, '/var/www/site/data/www/site.ru/ad/img-test/mbi900.ttf');
header('Content-Type: image/jpeg');
imageJPEG($nb_wt_image);
//освобождаем память
imagedestroy($nb_wt_image);
imagedestroy($nb_img2);
Написано
более двух лет назад
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации
Закрыть
Реклама
Спасибо всем кто откликнулся, сделал вот так
// задание максимальной ширины и высоты
$n_width = $imgw;
$n_height = $imgh;
// получение новых размеров
list($width_orig, $height_orig) = getimagesize($nb_img_root . $row2['image']);
$ratio_orig = $width_orig/$height_orig;
if ($n_width/$n_height > $ratio_orig) {
$n_width = $n_height*$ratio_orig;
} else {
$n_height = $n_width/$ratio_orig;
}
$marginh = ($imgh - $n_height) / 2;
$image_p = imagecreatetruecolor($imgw, $imgh);
imagefill($image_p, 0, 0, 0xFFFFFF);
$image = imagecreatefromjpeg($nb_img_root . $row2['image']);
imagecopyresampled($image_p, $image, 0, $marginh, 0, 0, $n_width, $n_height, $width_orig, $height_orig);