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

Форум PHP

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

 

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

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

тема: Большая картинка => Маленькая картинка
 
 автор: GhosTer   (05.06.2005 в 15:24)   письмо автору
 
 

Прошу сказать мне как можно сделать следующее(если возможно такое):
Мне нужно чтобы страница сама приабразовывала, при сохранении картинки, картинку большую в картинку маленькую и сохраняла и большую под именем *_big, и маленькую под именем *_sma


>В зарание спасибо!

   
 
 автор: cheops   (05.06.2005 в 15:34)   письмо автору
 
   для: GhosTer   (05.06.2005 в 15:24)
 

Скрипт для изменения размера изображения можно посмотреть в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145, при помощи его вы сможете создать уменьшенное изображение из большого. Обычно это делают на этапе загрузки изображений на сайт (например, в фотогалереях, которые вы можете загрузить из раздела downloads http://www.softtime.ru/info/downloads.php). Не могли бы вы подробнее описать как вам видится работа страницы?

   
 
 автор: GhosTer   (05.06.2005 в 15:56)   письмо автору
 
   для: cheops   (05.06.2005 в 15:34)
 

Большое спасибо! Это то, что мне нужно! Дальше я сделаю сам!
cheops ты меня выручил!

   
 
 автор: GhosTer   (05.06.2005 в 17:44)   письмо автору
 
   для: cheops   (05.06.2005 в 15:34)
 

Мне высветило ошибку:
Fatal error: Call to undefined function: imagecreatetruecolor() in c:\apache\htdocs\g\1.php on line 24

Я использовал следующий код:

<?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");         
            break; 
        case 
'image/gif':     
            
// сохраняем в файл small.gif         
            
imagegif($dest_img"small.$ext");         
            break;         
    }         

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

?>


Что делать?

   
 
 автор: cheops   (05.06.2005 в 20:44)   письмо автору
 
   для: GhosTer   (05.06.2005 в 17:44)
 

Это означает, что у вас не подключена библиотека расширения GDLib, о том как её подключить можно почитать в статье по ссылке http://www.softtime.ru/info/articlephp.php?id_article=24. Всё сводится к тому, чтобы снять комментарий (;) напротив строки
extension=php_gd2.dll

в конфигурационном файле php.ini (С:/Windows/php.ini). При обращении к скрипту
<?php
  phpinfo
();
?>

должен появится раздел gd. Если это так, библиотека подключена и приведённый выше скрипт будет работать.

   
 
 автор: GhosTer   (06.06.2005 в 14:23)   письмо автору
 
   для: cheops   (05.06.2005 в 20:44)
 

Я сделал как было сказано!
Но теперь следующая ошибка!
Прошу объяснить!
Код все тотже!

Предупреждение: Снабженный аргумент - не действительный ресурс образа в c:\apache\htdocs\g\1.php на линии 73 (imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);)

Предупреждение: Снабженный аргумент - не действительный ресурс образа в c:\apache\htdocs\g\1.php на линии 90 (imagedestroy($src_img); )

   
 
 автор: glsv (Дизайнер)   (06.06.2005 в 17:37)   письмо автору
 
   для: GhosTer   (06.06.2005 в 14:23)
 

Видимо не создается образ исходного изображения src_img вот в этой части кода

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;          
    }

Файл с исходным изображением у вас как называется? test.jpg?

$source="test.jpg";

Он должен лежать в той же директории где лежит скрипт.
И если это Jpg, то нельзя использовать опции progressive и optimized при сохранении файла.

   
 
 автор: GhosTer   (06.06.2005 в 18:30)   письмо автору
 
   для: glsv (Дизайнер)   (06.06.2005 в 17:37)
 

называется также и лежит тамже, что сделать?

   
 
 автор: TuX   (30.06.2005 в 17:05)   письмо автору
 
   для: GhosTer   (05.06.2005 в 17:44)
 

Все замечательно работает, отличный пример!!
Вот только я не понял, как сделать, чтобы при создании маленькой картинки не появлялось черных плолос?.
Пример в архиве.

   
 
 автор: DJ Paltus   (01.07.2005 в 10:39)   письмо автору
 
   для: TuX   (30.06.2005 в 17:05)
 

Лично я, пользуясь этим же скриптом, в самом начале, сразу после гетимаджсайза делаю проверку на вертикальность/горизонтальность картинки


function resizeimg($filename, $w, $h)
{
$size_img = getimagesize("photo/".$filename);
if($size_img[0]<$size_img[1]){$a=$w; $w=$h; $h=$a;}
......... далее - по тексту}

и все получается без полей.

   
Rambler's Top100
вверх

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