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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: обрезание изображения
 
 автор: Bvz   (25.03.2009 в 12:17)   письмо автору
 
 

как как реализовать, что закачанная фотография создавала уменьшенную копию, но еще и обрезала ее например до размера 112 на 112

  Ответить  
 
 автор: Bvz   (25.03.2009 в 14:48)   письмо автору
 
   для: 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_img0000$w$h$size_img[0], $size_img[1]);                
    
// сохраняем уменьшенную копию в файл 
    
imagejpeg($dest_img$smallimage);             
    
// чистим память от созданных изображений
    
imagedestroy($dest_img);
    
imagedestroy($src_img);
    return 
true;         
  }  
?>

  Ответить  
 
 автор: Axxil   (25.03.2009 в 14:59)   письмо автору
 
   для: 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($thumb255255255);
    
imagefilledrectangle($thumb00$w$h$bgc);
    
$source imagecreatefromjpeg($filename);
    
imagecopyresized($thumb$source00$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); 
?>

  Ответить  
 
 автор: Bvz   (25.03.2009 в 15:06)   письмо автору
 
   для: Axxil   (25.03.2009 в 14:59)
 

вах, спасибо!!!

  Ответить  
 
 автор: Bvz   (26.03.2009 в 11:18)   письмо автору
 
   для: Bvz   (25.03.2009 в 15:06)
 

а можно закончить эту функцию так
    imagedestroy($thumb);
    imagedestroy($source);
    return true

и объединить 1-ю со 2-й

  Ответить  
Rambler's Top100
вверх

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