Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Отображение рисунков

Сообщения:  [1-4] 

 
 автор: sim5   (20.02.2008 в 14:07)   письмо автору
 
   для: Jaroslav   (20.02.2008 в 13:44)
 

Не читал, что вы привели - трудно читать код без подсветки. Вы хотите масштабировать с учетом фиксированного размера, а значит, если у вас проблемы, то вы это не учитываете. В общем случае это так: получив отношение ширины к высоте входного изображения, вы будете знать ориентацию его - альбомная, портрет (в ширину/в высоту), исходя из этого масштабируете. И второе, если на выходе нужен именно фиксированный размер, независимо от входного, накладывайте результат на шаблон вашего размера.

   
 
 автор: Jaroslav   (20.02.2008 в 13:44)   письмо автору
 
   для: sim5   (20.02.2008 в 11:58)
 

функцию масштабирования и привел.
Взята из книги "PHP5 - на примерах".

Ее надо таким образом доработать, чтобы рисунок (если вертикальный), обрезался под нужные размеры... Как сделать так, чтобы рисунок точно масштабировался заданных размеров? Получается или больше по ширине, или больше по высоте...

   
 
 автор: sim5   (20.02.2008 в 11:58)   письмо автору
 
   для: Jaroslav   (20.02.2008 в 10:09)
 

Вам не так поступать надо. После масштабирования входного изображения (как это нормально сделать, на форуме выложено приличное количество примеров) накладывать его на подложку 354х210, центрируя его.

   
 
 автор: Jaroslav   (20.02.2008 в 10:09)   письмо автору
 
 

Здравствуйте.

Вот функия:

******************************

function resizeimg($filename, $w, $h)
{


$ratio=$w/$h;
$size_img=getimagesize($filename);
if (($size_img[0]<$w) && ($size_img[1]<$h)) return true;
$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);
//$dest_img=imagecreatetruecolor(354, 210);
if ($size_img[2]==2) $src_img=imagecreatefromjpeg($filename);
else if ($size_img[2]==1) $src_img=imagecreatefromgif($filename);
else if ($size_img[2]==3) $src_img=imagecreatefrompng($filename);
if (!imagecopyresampled ($dest_img, $src_img, 0,0,0,0, $w, $h,
$size_img[0], $size_img[1])) return false;
$path_parts=pathinfo($filename);

if ($path_parts["extension"]=="jpg")
{
header("Content-type: image/jpeg");
imagejpeg($dest_img);
}

else if ($path_parts["extension"]=="gif")
{
header("Content-type: image/gif");
imagegif($dest_img);
}
else if ($path_parts["extension"]=="png")
{
header("Content-type: image/png");
imagegif($dest_img);
}

imagedestroy($dest_img);
imagedestroy($src_img);
return true;
}

******************************


Вызываю вот таким образом:


********************************

$img=$_GET['img'];
resizeimg($img, 354, 210);

********************************

$img - путь к рисунку.
Как сделать так, чтобы рисунки (не только горизонтальные, но и вертикальные) нормально масштабировались и отображались с размерами 354х210. Проблема в том, что рисунки при масштабировании не обрезаются, и в результате получаются растянутыми. Особенно, если изображение вертикальное...

   

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования