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 :: Обрезка изображений

 PHP.SU

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


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

> Описание: Не получается совместить 2 операции
dzheka3d
Отправлено: 28 Июля, 2011 - 17:01:14
Post Id



Гость


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


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




Здравствуйте! Помогите пожалуйста решить проблему. В общем есть изображение, его нужно сначала уменьшить а затем обрезать. Я сделал такой вот скриптит, конечно это только его часть, но основная, т.к. именно в ней проблема. Сразу хочу сказать, что функции работают нормально. Проблема начинается со строки 66. Если закоментировать эту строку, то картинка прекрасно обрезается (но не так как нужно), а если закоментировать строку 69, то картинка нормально уменьшается, а что бы она уменьшалась а потом обрезалась сделать не могу. Помогите пожалуйста.
PHP:
скопировать код в буфер обмена
  1.  
  2. function ImageContent($file)
  3. {
  4.         $handle = @fopen ($file, 'rb');
  5.         $contents = "";
  6.         if(!$handle)
  7.                 echo "Error file";
  8.         else
  9.         {
  10.                 while(!feof($handle))
  11.                 {
  12.                 $data = fread($handle, 8192);
  13.                 $contents .= $data;
  14.         }
  15.         fwrite($handle, $contents);
  16.         fclose($handle);
  17.         header("Content-type: image/Jpeg");
  18.         return $contents;
  19.         }
  20. }
  21.  
  22. function resize($src, $dest, $width, $height, $rgb=0x000000, $quality=100)
  23. {
  24.   if (!file_exists($src)) return false;
  25.  
  26.   $size = getimagesize($src);
  27.  
  28.   if ($size === false) return false;
  29.  
  30.   // Определяем исходный формат по MIME-информации, предоставленной
  31.   // функцией getimagesize, и выбираем соответствующую формату
  32.   // imagecreatefrom-функцию.
  33.   $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  34.   $icfunc = "imagecreatefrom" . $format;
  35.   if (!function_exists($icfunc)) return false;
  36.  
  37.   $x_ratio = $width / $size[0];
  38.   $y_ratio = $height / $size[1];
  39.  
  40.   $ratio       = min($x_ratio, $y_ratio);
  41.   $use_x_ratio = ($x_ratio == $ratio);
  42.  
  43.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  44.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  45.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  46.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  47.  
  48.   $isrc = $icfunc($src);
  49.   $idest = imagecreatetruecolor($width, $height);
  50.  
  51.   imagefill($idest, 0, 0, $rgb);
  52.   imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
  53.     $new_width, $new_height, $size[0], $size[1]);
  54.  
  55.   imagejpeg($idest, $dest, $quality);
  56.  
  57.   imagedestroy($isrc);
  58.   imagedestroy($idest);
  59.  
  60.   return true;
  61. }
  62.  
  63.  
  64. $fn=PATCH_IMAGE."/$rc[basename]/$basename";
  65. resize($fn, $zig, $resivl, $resivl2); // Изменяем размер перед обрезкой
  66.                
  67. $dst=imagecreatetruecolor($resivl, $resivl2);
  68. imagecopyresampled($dst, $src, 0, 0, 0, 0, $resivl, $resivl2, $resivl, $resivl2);
  69. imagejpeg($dst,$imagejpeg_cache,100);
  70. header("Content-type: image/Jpeg");
  71. imagejpeg($dst,null,85);
  72. mysql_query("update cache_data set filesize = '".filesize($imagejpeg_cache)."' where image_id = '$r[id]' AND type = '$res'");
  73. echo ImageContent("cache_files/".$rl_cachedata[basename]);
  74.  
 
 Top
Мелкий Супермодератор
Отправлено: 28 Июля, 2011 - 17:05:44
Post Id



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


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


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




Определённо проблемы там.
Высылается заголовок, данные изображения, вызывается функция ImageContent, где опять пытается выслаться заголовок (и ловит ошибку до PHP5,3) и ещё комплект данных. Само собой, структура уже похерена и браузеру только удивляться остаётся.


-----
PostgreSQL DBA
 
 Top
dzheka3d
Отправлено: 28 Июля, 2011 - 17:23:36
Post Id



Гость


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


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




Ну а по отдельности же работает ((
 
 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