[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обрезать края картинки
Catsys
Подкиньте нужную функцию для того чтобы уменьшить изображение, и обрезать края, кароче есть изображение не вписывается в 100х100, уменьшает,оставляет центр, излишки обрезает



Спустя 3 минуты, 10 секунд (1.03.2012 - 18:13) walerus написал(а):
imagecopyresized() не ?

Спустя 2 минуты, 1 секунда (1.03.2012 - 18:15) Visman написал(а):
Кажется в этом классе http://phpforum.ru/index.php?showtopic=22325
есть такая возможность.

Спустя 12 минут, 58 секунд (1.03.2012 - 18:28) Catsys написал(а):
хорошо, уменьшить я смогу, а как мне умудрится ровно обрезать края, чтобы остался четко квадрат(середина)

Спустя 1 минута, 17 секунд (1.03.2012 - 18:30) walerus написал(а):
Catsys - Ну а у самого идеи есть хоть какие то? или поиском пытался пользоваться хотя бы ?

Спустя 16 минут, 52 секунды (1.03.2012 - 18:47) Catsys написал(а):
walerus, я искал, куча форумов, с такими проблемами, итог: "все, я нашел, всем спасибо", а решение никто не оставляет!, это и бесит




все, разобрался, но в отличии от остальных, я на этом незакончу, А ВОЗМУ БЛИН И СКАЖУ ЧТО Я НАШЕЛ!!!!


берем две функции,

<?php
/**
*
@version 0.1
*
@author recens
*
@license GPL
*
@copyright Гельтищева Нина (http://recens.ru)
*/

/**
* Масштабирование изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Масштабирование возможно как с указаниями одной стороны, так и двух, в процентах или пикселях.
*
*
@param string Расположение исходного файла
*
@param string Расположение конечного файла
*
@param integer Ширина конечного файла
*
@param integer Высота конечного файла
*
@param bool Размеры даны в пискелях или в процентах
*
@return bool
*/

function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i) {
echo 'Невозможно получить длину и ширину изображения';
return;
}
$types = array('','gif','jpeg','png');
$ext = $types[$type];
if ($ext) {
$func = 'imagecreatefrom'.$ext;
$img = $func($file_input);
} else {
echo 'Некорректный формат файла';
return;
}
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
}
if (!$h_o) $h_o = $w_o/($w_i/$h_i);
if (!$w_o) $w_o = $h_o/($h_i/$w_i);
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
if ($type == 2) {
return imagejpeg($img_o,$file_output,100);
} else {
$func = 'image'.$ext;
return $func($img_o,$file_output);
}
}


/**
* Обрезка изображения
*
* Функция работает с PNG, GIF и JPEG изображениями.
* Обрезка идёт как с указанием абсоютной длины, так и относительной (отрицательной).
*
*
@param string Расположение исходного файла
*
@param string Расположение конечного файла
*
@param array Координаты обрезки
*
@param bool Размеры даны в пискелях или в процентах
*
@return bool
*/

function crop($file_input, $crop = 'square',$percent = false) {
list($w_i, $h_i, $type) = getimagesize($file_input);
if (!$w_i || !$h_i)
return;

$types = array('','gif','jpeg','png');
$ext = $types[$type];
if ($ext) {
$func = 'imagecreatefrom'.$ext;
$img = $func($file_input);
} else
return
;

if ($crop == 'square') {
$min = ($w_i > $h_i) ? $h_i : $w_i;
$w_o = $h_o = $min;
// Выравнивание по центру:
$x_o = intval(($w_i - $min) / 2);
$y_o = intval(($h_i - $min) / 2);
/*
// Выравнивание по правой стороне
$x_o = $w_i - $min;
// Выравнивание по низу
$y_o = $h_i - $min;
// Выравнивание по левой стороне
$x_o = 0;
// выравнивание по верху
$y_o = 0;
*/

} else {
list($x_o, $y_o, $w_o, $h_o) = $crop;
if ($percent) {
$w_o *= $w_i / 100;
$h_o *= $h_i / 100;
$x_o *= $w_i / 100;
$y_o *= $h_i / 100;
}
if ($w_o < 0)
$w_o += $w_i;
$w_o -= $x_o;
if ($h_o < 0)
$h_o += $h_i;
$h_o -= $y_o;
}
$img_o = imagecreatetruecolor($w_o, $h_o);
imagecopy($img_o, $img, 0, 0, $x_o, $y_o, $w_o, $h_o);

$temp_file = tempnam(sys_get_temp_dir() , 'crop');

if ($type == 2) {
$res = imagejpeg($img_o, $temp_file, 100);
} else {
$func = 'image'.$ext;
$res = $func($img_o, $temp_file);
}

if ($res)
return $temp_file;
else
return
false;
}
?>


вот пример использования


include("./resize_crop.php");//файл в котором функции, те что выше
$img=crop($_FILES['foto']['tmp_name']);
resize($img, "img.jpg", "100", "100");


Функции взяты отсюда
переделаны по коментариям оттудаже

Спустя 2 часа, 40 минут, 54 секунды (1.03.2012 - 21:27) walerus написал(а):
Catsys - вот и я про то же ), при первом запросе в яндекс - "как обрезать фото PHP", он именно этот пост мне и выдал ), я к тому, что поиск тоже иногда дает результаты )

Спустя 12 часов, 20 минут, 17 секунд (2.03.2012 - 09:48) Visman написал(а):
Поздно заметил
Класс для работы с изображениями
http://phpforum.ru/index.php?showtopic=56128

Спустя 9 дней, 15 часов, 5 минут, 17 секунд (12.03.2012 - 00:53) Frigggg написал(а):
Прикольно, мне тоже нужно было, забираю=)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.