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 :: Функция resize с записью a файл и вывод в браузер

 PHP.SU

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


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

> Без описания
dzheka3d
Отправлено: 03 Августа, 2011 - 00:44:57
Post Id



Гость


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


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




Здравствуйте! Нашел в интернете код, который уменьшает размер картинки.

Как сделать так, что бы уменьшив картинку, она записывалась не на диск и в не в браузер, а в память, что бы я сразу же мог применить к ней другую функцию (например обрезки)?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function img_resize($src, $dest, $width, $height, $rgb=0xFFFF00, $quality=100)
  4. {
  5.   if (!file_exists($src)) return false;
  6.  
  7.   $size = getimagesize($src);
  8.  
  9.   if ($size === false) return false;
  10.  
  11.   // Определяем исходный формат по MIME-информации, предоставленной
  12.   // функцией getimagesize, и выбираем соответствующую формату
  13.   // imagecreatefrom-функцию.
  14.   $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  15.   $icfunc = "imagecreatefrom" . $format;
  16.   if (!function_exists($icfunc)) return false;
  17.  
  18.   $x_ratio = $width / $size[0];
  19.   $y_ratio = $height / $size[1];
  20.  
  21.   $ratio       = min($x_ratio, $y_ratio);
  22.   $use_x_ratio = ($x_ratio == $ratio);
  23.  
  24.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  25.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  26.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  27.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  28.  
  29.   $isrc = $icfunc($src);
  30.   $idest = imagecreatetruecolor($width, $height);
  31.  
  32.   imagefill($idest, 0, 0, $rgb);
  33.   imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
  34.     $new_width, $new_height, $size[0], $size[1]);
  35.  
  36.   imagejpeg($idest, $dest, $quality);
  37.   header("content-type: image/jpeg");
  38.   imagejpeg($idest);
  39.  
  40.   imagedestroy($isrc);
  41.   imagedestroy($idest);
  42.  
  43.   return true;
  44.  
  45. }
  46.  
  47.  
  48.  
  49. $filename = 'sdfjhf.jpg';
  50. $fn = 'original.jpg';
  51.  
  52. img_resize($fn, $filename, 500, 375);
  53.  
  54. ?>
  55.  

(Добавление)
Вот немного поколупался и у меня получилось такое: Но все же может загружать в память а не во временную папку на диске?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function img_resize($src, $dest, $width, $height, $rgb=0xFFFF00, $quality=100)
  3. {
  4.   if (!file_exists($src)) return false;
  5.  
  6.   $size = getimagesize($src);
  7.  
  8.   if ($size === false) return false;
  9.  
  10.   // Определяем исходный формат по MIME-информации, предоставленной
  11.   // функцией getimagesize, и выбираем соответствующую формату
  12.   // imagecreatefrom-функцию.
  13.   $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  14.   $icfunc = "imagecreatefrom" . $format;
  15.   if (!function_exists($icfunc)) return false;
  16.  
  17.   $x_ratio = $width / $size[0];
  18.   $y_ratio = $height / $size[1];
  19.  
  20.   $ratio       = min($x_ratio, $y_ratio);
  21.   $use_x_ratio = ($x_ratio == $ratio);
  22.  
  23.   $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  24.   $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  25.   $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  26.   $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  27.  
  28.   $isrc = $icfunc($src);
  29.   $idest = imagecreatetruecolor($width, $height);
  30.  
  31.   imagefill($idest, 0, 0, $rgb);
  32.   imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0,
  33.     $new_width, $new_height, $size[0], $size[1]);
  34.  
  35.   imagejpeg($idest, $dest, $quality);
  36.  
  37.   imagedestroy($isrc);
  38.   imagedestroy($idest);
  39.  
  40.   return true;
  41.  
  42. }
  43.  
  44.  
  45.  
  46. $filename = 'sdfjhf.jpg'; // имя файла для сохранения
  47. $fn = 'original.jpg'; //
  48.  
  49. img_resize($fn, 'temp/'.$filename, 500, 375);
  50.  
  51. $old_res = 'temp/'.$filename;
  52.  
  53. $src=imagecreatefromjpeg($old_res);
  54.  
  55. $dst=imagecreatetruecolor(500, 200);
  56. imagecopyresampled($dst, $src, 0, 0, 0, 0, 500, 200, 500, 200);
  57. imagejpeg($dst,$filename,100);
  58. header("Content-type: image/Jpeg");
  59. imagejpeg($dst,null,85);
  60.  
  61. unlink('temp/'.$filename);
  62.  
  63.  
  64.  
  65. ?>

(Отредактировано автором: 03 Августа, 2011 - 01:50:06)

 
 Top
illy
Отправлено: 03 Августа, 2011 - 09:42:32
Post Id



Участник


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


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




А сразу обрезать нельзя? Не понял


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
dzheka3d
Отправлено: 03 Августа, 2011 - 14:19:41
Post Id



Гость


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


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




illy пишет:
А сразу обрезать нельзя?

Можно, но мне нужно, что бы картинка была пропорционально обрезана. Поэтому нужно сначала уменьшить её...
 
 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