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

Форум PHP

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

 

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

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

тема: помогите доработать функцию
 
 автор: Bvz   (12.02.2010 в 13:44)   письмо автору
 
 

вот известная функция, которая создает уменьшенную копию изобажения
<?php

  
// Функция создающая уменьшенную копию фотографии $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;         

  }  

?>


не всегда известна ширина и высота загружаемого изображения,
поэтому я ее вызываю

resizeimg($image, $smallimage, 150, 150)

но тогда она делает 150 пикселей самую широкую сторону, а как сделать, чтоб она делала 150 пикселей самую узкую сторону?

  Ответить  
 
 автор: Bvz   (12.02.2010 в 13:46)   письмо автору
 
   для: Bvz   (12.02.2010 в 13:44)
 

разобрасля заменил $ratio<$src_ratio на $ratio>$src_ratio

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

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