Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: разбираю функцию gd

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
vale1487
Отправлено: 07 Марта, 2010 - 18:24:39
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Разбираю подсмотренную функцию масштабировани изображений. И ввроде бы все ясно. Но при запуске не выдает ошибок в лог, и соотсветсвенно не выводит ничего.

Вроде бы все верно

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // выводим
  3. resize("4.jpg","small_4.jpg",130,100);
  4.  
  5.  
  6.  
  7.  
  8. function resize($fileimg,$smallimg,$w,$h)
  9. {
  10. // процент уменьшенной копии рисунка
  11. $ratio=$w/$h;
  12. //получим размер исходника
  13. $size_img=getimagesize($fileimg);
  14. // если высота и ширина меньше чем задано то уменьшение не нужно возвращаем true
  15. if($size_img[0]<$w and $size_img[1]<$h )
  16. {
  17.    
  18.     return true;
  19. }
  20. // процент сжатия исходника
  21. $src_ratio=$size_img[0] / $size_img[1];
  22.  
  23. // вычислени размееров уменьшенной копии
  24.  
  25. if ($ratio<$src_ratio)
  26. {
  27. $h=$w/$src_ratio   ;
  28.    
  29. }
  30. else
  31. {
  32.    
  33.   $w=$h*$src_ratio;  
  34.    
  35. }
  36. // создание пустого изображения по данным размерам
  37.  
  38. $dest_img=imagecreatetruecolor($w,$h);
  39.  
  40. //вызов нужно функии создания в зависимости от расширения
  41. //1=gif,2=jpg,3=png итд
  42. if($size_img[2]==2)
  43. {
  44.     $src_img=imagecreatefromjpeg($filename);// если jpg формат
  45.  
  46. }
  47. //масштабирование
  48.  
  49.  
  50.  
  51.      if(!imagecopyresampled($dest_img,$src_img,0,0,0,0,$w,$h,$size_img[0],$size_img[1]))
  52.      
  53.      {
  54.          return false;
  55.          
  56.          
  57.      }
  58.      
  59. // сохраняем уменьшенное
  60. $pats_parts=pathinfo($smallimg);
  61. // если определено как jpeg сохраняет так же (extension из массива= расширение)
  62. if($pats_parts['extension']=='jpg')
  63.  
  64. {
  65.  imagejpeg($dest_img,$smallimg);
  66.    
  67.    
  68. }
  69.  
  70. // очищаем память от изображений
  71. imagedestroy($dest_img);
  72. imagedestroy($src_img);
  73. return true;
  74.  
  75.  
  76.  
  77. }
  78.   ?>

(Отредактировано автором: 07 Марта, 2010 - 18:59:39)

 
 Top
Мелкий Супермодератор
Отправлено: 07 Марта, 2010 - 18:30:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Наоборот делается - сначала объявление функции, а затем - её вызов.
PS: И обрамляйте код тэгом [PHP] - читать удобнее Улыбка


-----
PostgreSQL DBA
 
 Top
vale1487
Отправлено: 07 Марта, 2010 - 18:48:21
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




да спасибо, но теперь имеем предупреждение

PHP Warning: imgsize.php on line 69
imagecopyresampled(): supplied argument is not a valid Image resource

а 69 начинает масштабирование

if(!imagecopyresampled($dest_img,$src_img,0,0,0,0,$w,$h,$size_img[0],$size_img[1]))


x

(Отредактировано автором: 07 Марта, 2010 - 18:54:39)

 
 Top
JustUserR
Отправлено: 08 Марта, 2010 - 15:20:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Мелкий пишет:
Наоборот делается - сначала объявление функции, а затем - её вызов.
Да ладно помоему это особенно без разницы - ведь в PHP функции это не объект первого рода и в них нет такой функци по протому динамическому ее созданию как в JS - а такие функции можно объявлеть и так


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ka35b2
Отправлено: 04 Июля, 2010 - 18:15:30
Post Id



Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Мелкий пишет:
Наоборот делается - сначала объявление функции, а затем - её вызов.


Это не важно. Можно хоть где написать функцию и хоть где ее вызвать в пределе одного файла.
 
 Top
Champion Супермодератор
Отправлено: 04 Июля, 2010 - 18:23:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Да, объявлять функцию до вызова или после - это не важно.
А ошибка означает, что передана переменная не того типа.
vale1487 пишет:
$dest_img,$src_im
- как минимум одна из них - это не указатель на картинку, хотя должен быть ей. Надо смотреть как они формируются и постигать азы отладки: http://forum.php.su/topic.php?fo...=62&topic=78
 
 Top
JustUserR
Отправлено: 05 Июля, 2010 - 02:18:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




vale1487 Вероятно у вас нет доступа к указанным для масштабирования изображениям - это может произойти при указании неправильного относительного пути который может быть различным в зависимости от текущей рабочей папки - или указание web-пути заместо файлового пути который на самом деле является alias-ом - или же как вариант у вас отсутствуют нужные права доступа


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB