вопрос о картинке (кадрировать)

Статус
В этой теме нельзя размещать новые ответы.

ivashka

Полезный
Регистрация
16 Май 2007
Сообщения
151
Реакции
15
Здравствуйте.
Есть линк на картинку, нет ли у кого готовой функции для кадрации.
Нужно отрезать n пикселей с низу.
Или как написать?
Заранее благодарен.
 
PHP:
<?php
$srcfile="11.jpg";  // исходный файл
$dstfile="22.jpg";  // "обрезанный" файл
$y=40;  // на сколько пикселей отрезать по y
$r=imagecreatefromjpeg($srcfile);
$t=imagecreate(imagesx($r),imagesy($r)-$y);
imagecopyresized($t,$r,0,0,0,0,imagesx($t),imagesy($t),imagesx($r),imagesy($r)-$y);
imagejpeg($t,$dstfile,50);
?>

P.S.: скрипт переделывает jpeg-файлы. Если нужно другие, то функции
imagejpeg
и
imagecreatefromjpeg
замени на соответствующие.
 
PHP:
/**
* аналог php-функции image_type_to_extension
*
* @param int $imagetype
* @return string 
*/
function image_type_to_extension2($imagetype){
	if(empty($imagetype)) return false;
	switch($imagetype)
	{
		case IMAGETYPE_GIF: return 'gif';
		case IMAGETYPE_JPEG: return 'jpeg';
		case IMAGETYPE_PNG: return 'png';
		case IMAGETYPE_WBMP: return 'wbmp';
		default: return false;
	}
}

/**
 * Crop
 *
 * @param string $src
 * @param int $x
 * @param int $y
 * @param int $w
 * @param int $h
 */
function crop_img($src, $x, $y, $w, $h){
	$image_params=getimagesize($src);
	if (eval("\$src_img=imagecreatefrom".image_type_to_extension2($image_params[2])."('".$src."');")!==false){
		$dest_img=imagecreatetruecolor($w, $h);
		imagecopyresampled($dest_img, $src_img, 0, 0, $x, $y, $w, $h, $w, $h);
		eval("image".image_type_to_extension2($image_params[2])."(\$dest_img, \$src, 100);");
	}
}

crop_img("{$_SERVER['DOCUMENT_ROOT']}/001.JPG", 300, 200, 200, 200);
 
PHP:
<?php
$srcfile="11.jpg";  // исходный файл
$dstfile="22.jpg";  // "обрезанный" файл
$y=40;  // на сколько пикселей отрезать по y
$r=imagecreatefromjpeg($srcfile);
$t=imagecreate(imagesx($r),imagesy($r)-$y);
imagecopyresized($t,$r,0,0,0,0,imagesx($t),imagesy($t),imagesx($r),imagesy($r)-$y);
imagejpeg($t,$dstfile,50);
?>
P.S.: скрипт переделывает jpeg-файлы. Если нужно другие, то функции
imagejpeg
и
imagecreatefromjpeg
замени на соответствующие.

полностью подходит, но такой способ почему-то искажает цвета картинки. Картинки становятся просто ужасные...
В чем дело, что можно сделать?
Ставлю imagejpeg($t,$dstfile,100);
 
тогда вместо
PHP:
$t=imagecreate(imagesx($r),imagesy($r)-$y);
ставь
PHP:
$t=imagecreatetruecolor(imagesx($r),imagesy($r)-$y);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху