X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите доработать функцию, которая обрезает изображение
sc2r2bey
sc2r2bey
Topic Starter сообщение 16.2.2010, 11:05; Ответить: sc2r2bey
Сообщение #1


есть функция evokeArea($smallimage,0,0,150,150,$target_filename)
которая обрезает изображение, а как сделать, чтоб она вырезала середину изображения?

[php]/**
/* @desc функция вырезает на картинке произвольную область
/* @param $filename путь к файлу с исходной картинкой
/* @param $x координата верхего левого угла нужной области
/* @param $y координата верхего левого угла нужной области
/* @param $w нужная ширина "обрезка"
/* @param $h нужная высота "обрезка"
/* @param $target_filename куда записывать результат. Если не указать, то перепишется исходный файл.
*/
function evokeArea($filename,$x,$y,$w,$h,$target_filename=null){
$thumb = imagecreatetruecolor($w, $h);
$bgc = imagecolorallocate($thumb, 255, 255, 255);
imagefilledrectangle($thumb, 0, 0, $w, $h, $bgc);
$source = imagecreatefromjpeg($filename);
imagecopyresampled($thumb, $source, 0, 0, $x, $y, $w, $h, $w, $h);
$target_filename = is_null($target_filename)?$filename:$target_filename;
imagejpeg($thumb,$target_filename);
imagedestroy($thumb);
imagedestroy($source);
return true;
}
?>[/php]


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 16.2.2010, 14:08; Ответить: yury_mw
Сообщение #2


sc2r2bey,
примерно, так
[php]/**
/* @desc функция вырезает на картинке произвольную отцентрованную область
/* @param $filename путь к файлу с исходной картинкой
/* @param $w нужная ширина "обрезка"
/* @param $h нужная высота "обрезка"
/* @param $target_filename куда записывать результат. Если не указать, то перепишется исходный файл.
*/
function evokeAlignedArea($filename,$w,$h,$target_filename=null){
$thumb = imagecreatetruecolor($w, $h);
$bgc = imagecolorallocate($thumb, 255, 255, 255);
imagefilledrectangle($thumb, 0, 0, $w, $h, $bgc);
$source = imagecreatefromjpeg($filename);
$size = GetImageSize($filename);
$x = round(($size[0]-$w)/2);
$y = round(($size[1]-$h)/2);
imagecopyresampled($thumb, $source, 0, 0, $x, $y, $w, $h, $w, $h);
$target_filename = is_null($target_filename)?$filename:$target_filename;
imagejpeg($thumb,$target_filename);
imagedestroy($thumb);
imagedestroy($source);
return true;
}
?>[/php]
(работоспособность исходной функции не проверял, только убрал из параметров функции $x,$y и добавил вычисление центральной области картинки)
опять же, желательно добавить проверки на то,
что $filename - это картинка и что делать, если это не так,
[php] $size = @GetImageSize($filename); if ($size) {} else {}[/php]
что $w, $h - не превышают размеров исходного изображения и что делать, если это не так



Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Поблагодарили: (2)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 725 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1702 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Boomerang Partners - новая партнерская программа для онлайн гемблинга, которая заплатит тебе больше.
0 BoomerangPartners 1711 29.10.2020, 9:41
автор: BoomerangPartners
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2340 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12481 24.7.2020, 17:02
автор: -JamesSmips-


 



RSS Текстовая версия Сейчас: 19.4.2024, 19:49
Дизайн