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

Форум PHP

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

 

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

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

тема: Снова уменьшение картинки
 
 автор: CrazyAngel   (17.03.2006 в 23:52)   письмо автору
 
 

Я понимаю что дублирую темы но как уменьшить прапорционально картинку, и чтоб качество у ние было большое

   
 
 автор: CrazyAngel   (18.03.2006 в 00:12)   письмо автору
 
   для: CrazyAngel   (17.03.2006 в 23:52)
 

У меня вопрос нельзя ли просто узнать высоту и ширину картинки а потом прапорцианально их изменить в теге <img scr="" width="" height="" >

можно так или качество будет отвратным?

   
 
 автор: CrazyAngel   (18.03.2006 в 00:20)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 00:12)
 

Что это за функция

imageCopyResampled

   
 
 автор: kasmanaft   (18.03.2006 в 05:28)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 00:12)
 

размеры картинки узнать можно....
$img_prop = getimagesize($image);
тогда в $img_prop[0] и $img_prop[1] будут размеры картинки...
(а насчет остального не знаю...

вопрос о функции...
ответы на такие вопросы хорошо знает яндекс...
http://1c.elias.ru/manuals/php42/f/imagecopyresampled.html

   
 
 автор: CrazyAngel   (18.03.2006 в 09:55)   письмо автору
 
   для: kasmanaft   (18.03.2006 в 05:28)
 

Ну гуру добайте помогите бедному начинающему

   
 
 автор: JIEXA   (18.03.2006 в 10:34)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 00:12)
 

> У меня вопрос нельзя ли просто узнать высоту и ширину картинки а потом прапорцианально их > изменить в теге <img scr="" width="" height="" >
> можно так или качество будет отвратным?

качество будет отвратное и грузится такая каротинка будет дольше.

приведите код функции, которой вы уменьшаете картинку, я попробую помочь.

   
 
 автор: cheops   (18.03.2006 в 13:25)   письмо автору
 
   для: CrazyAngel   (17.03.2006 в 23:52)
 

Приведу для полноты картины, код, уменьшающий изображение http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145.

   
 
 автор: JIEXA   (18.03.2006 в 14:36)   письмо автору
 
   для: cheops   (18.03.2006 в 13:25)
 

ну тогда вот нимного измененный код, который не изменяет качество картинки.

<?php 
    
// Создадим уменьшенную копию изображения 
     
    // имя файла с которым будем работать 
    // файл должен находиться в том же месте, что и этот скрипт 
    
$source="test.jpg"
    
// определим размеры уменьшенного изображения 
    
$d_w=133
    
$d_h=100
    
// вызываем функцию изменения размера 
    
resizeimg($source133100); 
     
    
// выводим картинку на экран 
    
?> 
    <img src="small.jpg"> 


<? 
function resizeimg($filename$w$h

    
// определим коэффициент сжатия изображения, которое будем генерить 
    
$ratio $w/$h
    
// создадим пустое изображение по заданным размерам 
    
$dest_img imagecreatetruecolor($w$h);     
    
// зальём его белым цветом 
    
imagefill($dest_img000xFFFFFF);   
    
// получим размеры исходного изображения 
    
$size_img getimagesize($filename); 
    
// получим коэффициент сжатия исходного изображения 
    
$src_ratio=$size_img[0]/$size_img[1]; 

    
// здесь вычисляем размеры, чтобы при масштабировании сохранились 
    // 1. Пропорции исходного изображения 
    // 2. Исходное изображение полностью помещалось на маленькой копии 
    // (не обрезалось) 
    
if ($src_ratio>$ratio
    { 
        
$old_h=$size_img[1]; 
        
$size_img[1]=floor($size_img[0]/$ratio); 
        
$old_h=floor($old_h*$h/$size_img[1]); 
    } 
    else 
    { 
        
$old_w=$size_img[0]; 
        
$size_img[0]=floor($size_img[1]*$ratio);     
        
$old_w=floor($old_w*$w/$size_img[0]); 
    } 
     
    
// исходя из того какой тип имеет изображение 
    // выбираем функцию создания 
    
switch ($size_img['mime']) 
    { 
        
// если тип файла JPEG 
        
case 'image/jpeg'
            
// создаем jpeg из файла 
            
$src_img imagecreatefromjpeg($filename);             
            
$ext="jpg";             
            break;         
        
// если тип файла GIF             
        
case 'image/gif':     
            
// создаем gif из файла         
            
$src_img imagecreatefromgif($filename);             
            
$ext="gif";             
            break;         
    } 
    
// масштабируем изображение    функцией 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]);         
     
    
// в зависимости от типа файла выбирвем функцию сохранения в файл 
    
switch ($size_img['mime']) 
    { 
        case 
'image/jpeg'
            
// сохраняем в файл small.jpg 
            
imagejpeg($dest_img"small.$ext"100);         
            break; 
        case 
'image/gif':     
            
// сохраняем в файл small.gif         
            
imagegif($dest_img"small.$ext"100);         
            break;         
    }         

    
// чистим память от созданных изображений 
    
imagedestroy($dest_img); 
    
imagedestroy($src_img);         

?>

   
 
 автор: CrazyAngel   (18.03.2006 в 19:22)   письмо автору
 
   для: JIEXA   (18.03.2006 в 14:36)
 

А что мне надо изменить чтоб, картинка только выводилась а не сохранялась,

мне надо сохранить картинку в переменной, чтоб потом куда хочешь туда и всавляешь

   
 
 автор: CrazyAngel   (19.03.2006 в 00:45)   письмо автору
 
   для: CrazyAngel   (18.03.2006 в 19:22)
 

Вот маленько изменил код

<?
function resizeimg($filename$w$h

    
// определим коэффициент сжатия изображения, которое будем генерить 
    
$ratio $w/$h
    
// создадим пустое изображение по заданным размерам 
    
$dest_img imagecreatetruecolor($w$h);      
    
// зальём его белым цветом 
    
imagefill($dest_img000xffff00);    
    
// получим размеры исходного изображения 
    
$size_img getimagesize($filename); 
    
// получим коэффициент сжатия исходного изображения 
    
$src_ratio=$size_img[0]/$size_img[1]; 

    
// здесь вычисляем размеры, чтобы при масштабировании сохранились 
    // 1. Пропорции исходного изображения 
    // 2. Исходное изображение полностью помещалось на маленькой копии 
    // (не обрезалось) 
    
if ($src_ratio>$ratio
    { 
        
$old_h=$size_img[1]; 
        
$size_img[1]=floor($size_img[0]/$ratio); 
        
$old_h=floor($old_h*$h/$size_img[1]); 
    } 
    else 
    { 
        
$old_w=$size_img[0]; 
        
$size_img[0]=floor($size_img[1]*$ratio);      
        
$old_w=floor($old_w*$w/$size_img[0]); 
    } 
      
    
// исходя из того какой тип имеет изображение 
    // выбираем функцию создания 
    
switch ($size_img['mime']) 
    { 
        
// если тип файла JPEG 
        
case 'image/jpeg'
            
// создаем jpeg из файла 
            
$src_img imagecreatefromjpeg($filename);              
            
$ext="jpg";              
            break;          
        
// если тип файла GIF              
        
case 'image/gif':      
            
// создаем gif из файла          
            
$src_img imagecreatefromgif($filename);              
            
$ext="gif";              
            break;          
    } 
        
    
//Выводим изображение
    
fpassthru($dest_img);
    
// чистим память от созданных изображений 
    
imagedestroy($dest_img); 
    
imagedestroy($src_img);          
    } 
?>


Поидеии он не должен сохранять картику в файл а просто должен вывести ее на экран, но происходят ошибки их вы можете посмотреть на http://www.toptizhka.ru/?act=cat

Вызываю функцию так

resizeimg('/img/'.$foo[largepic].'.jpg', 133, 100);

В $foo[largepic] находиться число картинки например 135

файл 135.jpg точно находиться в папке img

   
 
 автор: CrazyAngel   (19.03.2006 в 09:52)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 00:45)
 

Как сделать чтобы картинка могла назодиться в другом катологе?

   
 
 автор: CrazyAngel   (19.03.2006 в 12:13)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 09:52)
 

Блин, народ надайте умереть человеку

   
 
 автор: cheops   (19.03.2006 в 13:15)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 09:52)
 

>Как сделать чтобы картинка могла назодиться в другом
>катологе?
Хм... передавайте в параметре $filename путь до этого каталога.

   
 
 автор: CrazyAngel   (19.03.2006 в 13:31)   письмо автору
 
   для: cheops   (19.03.2006 в 13:15)
 

Передаю но не работает

   
 
 автор: CrazyAngel   (19.03.2006 в 19:25)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 13:31)
 

Вопрос до сих пор актуален

   
 
 автор: Евгений Петров   (19.03.2006 в 19:48)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 19:25)
 

А какая ошибка возникает?

   
 
 автор: cheops   (19.03.2006 в 21:24)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 13:31)
 

А путь верный?

   
 
 автор: CrazyAngel   (19.03.2006 в 23:44)   письмо автору
 
   для: cheops   (19.03.2006 в 21:24)
 

да

   
 
 автор: Евгений Петров   (19.03.2006 в 23:46)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 23:44)
 

Так какая ошибка то?

   
 
 автор: CrazyAngel   (19.03.2006 в 23:48)   письмо автору
 
   для: Евгений Петров   (19.03.2006 в 23:46)
 

Сейчас скажу

   
 
 автор: CrazyAngel   (19.03.2006 в 23:50)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 23:48)
 

Сейчас не получиться, но мне надо чтоб картинка сохранилась в переменной, а потом просто ее вывести

   
 
 автор: CrazyAngel   (20.03.2006 в 00:28)   письмо автору
 
   для: CrazyAngel   (19.03.2006 в 23:50)
 

Warning: getimagesize(/img/135.jpg): failed to open stream: No such file or directory in /home/toptizhka/www/index.php on line 40

Warning: Division by zero in /home/toptizhka/www/index.php on line 42

Warning: Division by zero in /home/toptizhka/www/index.php on line 58

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/toptizhka/www/index.php on line 85

Warning: fpassthru(): supplied resource is not a valid stream resource in /home/toptizhka/www/index.php on line 88

   
 
 автор: CrazyAngel   (20.03.2006 в 00:31)   письмо автору
 
   для: CrazyAngel   (20.03.2006 в 00:28)
 

/img/135.jpg

Точно есть

Вызываю функцию так

resizeimg('/img/'.$foo[largepic].'.jpg', 133, 100)

   
 
 автор: Евгений Петров   (20.03.2006 в 00:48)   письмо автору
 
   для: CrazyAngel   (20.03.2006 в 00:31)
 

Попробуйте вызывать так:
resizeimg('img/'.$foo[largepic].'.jpg', 133, 100)

   
 
 автор: CrazyAngel   (20.03.2006 в 00:55)   письмо автору
 
   для: Евгений Петров   (20.03.2006 в 00:48)
 

Ну вот опять

С-П-А-С-И-Б-О

   
 
 автор: Zilog   (20.03.2006 в 17:58)   письмо автору
 
   для: CrazyAngel   (17.03.2006 в 23:52)
 

у меня это сделано вот как:



function DecreaseImage($src_file, $dest_file, $width) 
{

  $src = ImageCreateFromJpeg($src_file);
  if ($src) 
  {
    $img_width = ImageSX($src);
    $img_height = ImageSY($src);
    $img_new_width = $width;
    $img_new_height = ($img_height/100)*($img_new_width/($img_width/100));
    $img_dest = ImageCreateTrueColor($img_new_width,$img_new_height);
    imagefill($img_dest, 0, 0, imagecolorallocate($img_dest, 255,255,255));
    ImageCopyResized($img_dest, $src, 0, 0, 0, 0, $img_new_width, $img_new_height, $img_width, $img_height);
    ImageJpeg($img_dest, $dest_file, 75); 
    ImageDestroy($src);
    ImageDestroy($img_dest);  
  }
  else
  {
    ShowEMsg("Бяка");
    return false;
  }
  return true;

}

   
Rambler's Top100
вверх

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