|
|
|
| как как реализовать, что закачанная фотография создавала уменьшенную копию, но еще и обрезала ее например до размера 112 на 112 | |
|
|
|
|
|
|
|
для: Bvz
(25.03.2009 в 12:17)
| | вот хотел бы изменить следующий скрипт из книги:
<?php
///////////////////////////////////////////////////
// Блок "Фотогалерея"
// 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (softtime@softtime.ru)
///////////////////////////////////////////////////
// Функция создающая уменьшенную копию фотографии $filename,
// которая помещается в файл $smallimage
// Уменьшенный вариант имеет ширину и высту равную
// $w и $h пикселам, соответственн.
function resizeimg($filename, $smallimage, $w, $h)
{
// Имя файла с масштабируемым изображением
$filename = "../".$filename;
// Имя файла с уменьшенной копией.
$smallimage = "../".$smallimage;
// определим коэффициент сжатия изображения, которое будем генерить
$ratio = $w/$h;
// получим размеры исходного изображения
$size_img = getimagesize($filename);
// получим коэффициент сжатия исходного изображения
$src_ratio=$size_img[0]/$size_img[1];
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились
// пропорции исходного изображения
if ($ratio<$src_ratio)
{
$h = $w/$src_ratio;
}
else
{
$w = $h*$src_ratio;
}
// создадим пустое изображение по заданным размерам
$dest_img = imagecreatetruecolor($w, $h);
// создаем jpeg из файла
$src_img = imagecreatefromjpeg($filename);
// масштабируем изображение функцией imagecopyresampled()
// $dest_img - уменьшенная копия
// $src_img - исходной изображение
// $w - ширина уменьшенной копии
// $h - высота уменьшенной копии
// $size_img[0] - ширина исходного изображения
// $size_img[1] - высота исходного изображения
imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
// сохраняем уменьшенную копию в файл
imagejpeg($dest_img, $smallimage);
// чистим память от созданных изображений
imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}
?>
|
| |
|
|
|
|
|
|
|
для: Bvz
(25.03.2009 в 12:17)
| |
<?
/**
/* @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);
imagecopyresized($thumb, $source, 0, 0, $x, $y, $w, $h, $w, $h);
$target_filename = is_null($target_filename)?$filename:$target_filename;
imagejpeg($thumb,$target_filename);
}
// пример использования
evokeArea($source_filename,0,0,112,112,$target_filename);
?>
|
| |
|
|
|
|
|
|
|
для: Axxil
(25.03.2009 в 14:59)
| | вах, спасибо!!! | |
|
|
|
|
|
|
|
для: Bvz
(25.03.2009 в 15:06)
| | а можно закончить эту функцию так
imagedestroy($thumb);
imagedestroy($source);
return true
|
и объединить 1-ю со 2-й | |
|
|
|