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

Форум PHP

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

 

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

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

тема: Почему не работает уменьшение изображения
 
 автор: CrazyAngel   (15.10.2007 в 08:33)   письмо автору
 
 

вот собсна функция

<?php
function resizeimg($filename$w$h){
    
// определим коэффициент сжатия изображения, которое будем генерить
    
$ratio $w/$h;
    
// получим размеры исходного изображения
    
$size_img getimagesize($filename);
    
// Если размеры меньше, то масштабирования не нужно
    
if (($size_img[0]<$w) && ($size_img[1]<$h)) return $filename;
    
// получим коэффициент сжатия исходного изображения
    
$src_ratio=$size_img[0]/$size_img[1];
    
$src_ratio = ($src_ratio)?$src_ratio:1;

    
// Здесь вычисляем размеры уменьшенной копии, чтобы при масштабировании сохранились 
    // пропорции исходного изображения
    
if ($ratio<$src_ratio)
    {
      
$h $w/$src_ratio;
    }
    else
    {
      
$w $h*$src_ratio;
    }
    
// создадим пустое изображение по заданным размерам 
    
$dest_img imagecreatetruecolor($w$h);  
    
$white imagecolorallocate($dest_img255255255);       
    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); 

    
// масштабируем изображение     функцией 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]);                
    
// сохраняем уменьшенную копию в файл 
    
if ($size_img[2]==2){
        
$smallimage tempnam("/tmp""IMG_").".jpg";
        
imagejpeg($dest_img$smallimage);                      
    }
    else if (
$size_img[2]==1){
        
$smallimage tempnam("/tmp""IMG_").".gif";
        
imagegif($dest_img$smallimage);                      
    }
    else if (
$size_img[2]==3){
        
$smallimage tempnam("/tmp""IMG_").".png";
        
imagepng($dest_img$smallimage); 
    }
    
// чистим память от созданных изображений
    
imagedestroy($dest_img);
    
imagedestroy($src_img);
    return 
$smallimage;         

?>

и она не может правильно обработать например картинку в аттаче, тоесть картинки некоторых размеров ... :(

помоему это связанно с коофициэнтом...
подскажите в чем может быть трабла

   
 
 автор: Night_Charter   (15.10.2007 в 11:18)   письмо автору
 
   для: CrazyAngel   (15.10.2007 в 08:33)
 


<?php
  
function resizeimg($filename$smallimage$w$h)   
  {   
    
// определим коэффициент сжатия изображения, которое будем генерить   
    
$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);     
    
$white imagecolorallocate($dest_img255255255);          
    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);    

    
// масштабируем изображение     функцией 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]);                   
    
// сохраняем уменьшенную копию в файл    
    
if ($size_img[2]==2)  imagejpeg($dest_img$smallimage);                         
    else if (
$size_img[2]==1imagegif($dest_img$smallimage);                         
    else if (
$size_img[2]==3imagepng($dest_img$smallimage);    
    
// чистим память от созданных изображений   
    
imagedestroy($dest_img);   
    
imagedestroy($src_img);   
    return 
true;            
  }              

?>


Попробуйте эту функцию

   
 
 автор: CrazyAngel   (26.10.2007 в 07:07)   письмо автору
 
   для: CrazyAngel   (15.10.2007 в 08:33)
 

up

   
 
 автор: kasmanaft   (26.10.2007 в 09:18)   письмо автору
 
   для: CrazyAngel   (26.10.2007 в 07:07)
 

Неправильно - это как? Вроде бы работает...

   
Rambler's Top100
вверх

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