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
Форумы портала PHP.SU :: Версия для печати :: разбираю функцию gd
Форумы портала PHP.SU » PHP » Программирование на PHP » разбираю функцию gd

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

1. vale1487 - 07 Марта, 2010 - 18:24:39 - перейти к сообщению
Разбираю подсмотренную функцию масштабировани изображений. И ввроде бы все ясно. Но при запуске не выдает ошибок в лог, и соотсветсвенно не выводит ничего.

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

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.   ?>
2. Мелкий - 07 Марта, 2010 - 18:30:11 - перейти к сообщению
Наоборот делается - сначала объявление функции, а затем - её вызов.
PS: И обрамляйте код тэгом [PHP] - читать удобнее Улыбка
3. vale1487 - 07 Марта, 2010 - 18:48:21 - перейти к сообщению
да спасибо, но теперь имеем предупреждение

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
4. JustUserR - 08 Марта, 2010 - 15:20:37 - перейти к сообщению
Мелкий пишет:
Наоборот делается - сначала объявление функции, а затем - её вызов.
Да ладно помоему это особенно без разницы - ведь в PHP функции это не объект первого рода и в них нет такой функци по протому динамическому ее созданию как в JS - а такие функции можно объявлеть и так
5. ka35b2 - 04 Июля, 2010 - 18:15:30 - перейти к сообщению
Мелкий пишет:
Наоборот делается - сначала объявление функции, а затем - её вызов.


Это не важно. Можно хоть где написать функцию и хоть где ее вызвать в пределе одного файла.
6. Champion - 04 Июля, 2010 - 18:23:44 - перейти к сообщению
Да, объявлять функцию до вызова или после - это не важно.
А ошибка означает, что передана переменная не того типа.
vale1487 пишет:
$dest_img,$src_im
- как минимум одна из них - это не указатель на картинку, хотя должен быть ей. Надо смотреть как они формируются и постигать азы отладки: http://forum.php.su/topic.php?fo...=62&topic=78
7. JustUserR - 05 Июля, 2010 - 02:18:54 - перейти к сообщению
vale1487 Вероятно у вас нет доступа к указанным для масштабирования изображениям - это может произойти при указании неправильного относительного пути который может быть различным в зависимости от текущей рабочей папки - или указание web-пути заместо файлового пути который на самом деле является alias-ом - или же как вариант у вас отсутствуют нужные права доступа

 

Powered by ExBB FM 1.0 RC1