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 :: Ресайз + Watermark средствами PHP

 PHP.SU

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


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

> Без описания
leonellus
Отправлено: 06 Января, 2015 - 22:31:31
Post Id


Новичок


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


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




Я уже несколько месяцев мучаюсь, не получается изменить размер загружаемого файла. Ну хоть ты убейся об стену и все. Помогите люди добрые, желательно как для чайников - с комментариями к каждой строке. Я новичок в PHP

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $uploaddir = '../test/';
  4. $apend=date('YmdHis');
  5. $forma='.jpg';
  6. $filename = "$apend$forma";
  7. $uploadfile = "$uploaddir$apend$forma";
  8. move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
  9. $im = imagecreatefromjpeg($uploadfile);  
  10. $NewWidth=450;
  11. $NewHeight=360;
  12. list($width, $height) = getimagesize($im);
  13. $ratio_org=$width/$height;
  14. if ($width/$height > $ratio_orig)
  15. {
  16. $NewWidth = $height*$ratio_orig;
  17. }
  18. elseif ($height/$width > $ratio_orig)
  19. {
  20. $NewHeight = $width/$ratio_orig;
  21. }
  22. $dest = imagecreatetruecolor($NewWidth,$NewHeight);
  23. imagecopyresampled($dest, $im, 0, 0, 0, 0, $NewWidth, $NewHeight, $width, $height);
  24. imagejpeg($dest, $im, 100);
  25. ?>
  26.  


P.S. Поиском пользовался. Перебрал кучу готовых скриптов, но так ничего не получилось.

P.S.S. Насчет Watermark'a - я даже не понял как это делается. Если не сложно, объясните как он делается

(Отредактировано автором: 06 Января, 2015 - 22:40:47)

 
 Top
3d_killer
Отправлено: 10 Января, 2015 - 19:04:53
Post Id



Участник


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. /***********************************************************************************
  3. Функция img_resize(): генерация thumbnails
  4. Параметры:
  5.   $src             - имя исходного файла
  6.   $dest            - имя генерируемого файла
  7.   $width, $height  - ширина и высота генерируемого изображения, в пикселях
  8. Необязательные параметры:
  9.   $rgb             - цвет фона, по умолчанию - белый
  10.   $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)
  11. ***********************************************************************************/
  12. function img_resize($src, $dest, $width, $height, $rgb = 0xFFFFFF, $quality = 100)
  13. {
  14.     if (!file_exists($src))
  15.         return false;
  16.  
  17.     $size = getimagesize($src);
  18.      
  19.     if ($size === false)
  20.         return false;
  21.  
  22.     $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
  23.     $icfunc = 'imagecreatefrom'.$format;
  24.      
  25.     if (!function_exists($icfunc))
  26.         return false;
  27.  
  28.     $x_ratio = $width  / $size[0];
  29.     $y_ratio = $height / $size[1];
  30.      
  31.     if ($height == 0)
  32.     {
  33.         $y_ratio = $x_ratio;
  34.         $height  = $y_ratio * $size[1];
  35.     }
  36.     elseif ($width == 0)
  37.     {
  38.         $x_ratio = $y_ratio;
  39.         $width   = $x_ratio * $size[0];
  40.     }
  41.      
  42.     $ratio       = min($x_ratio, $y_ratio);
  43.     $use_x_ratio = ($x_ratio == $ratio);
  44.      
  45.     $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  46.     $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  47.     $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width)   / 2);
  48.     $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);
  49.      
  50.     // если не нужно увеличивать маленькую картинку до указанного размера
  51.    // if ($size[0]<$new_width && $size[1]<$new_height)
  52.    // {
  53.    //     $width = $new_width = $size[0];
  54.    //     $height = $new_height = $size[1];
  55.    // }
  56.  
  57.     $isrc  = $icfunc($src);
  58.         //imagefilter($isrc, IMG_FILTER_GRAYSCALE);
  59.         //imagefilter($isrc, IMG_FILTER_BRIGHTNESS, 100);
  60.        
  61.        
  62.        
  63.     $idest = imagecreatetruecolor($width, $height);
  64.      
  65.     imagefill($idest, 0, 0, $rgb);
  66.     imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
  67.  
  68.     $i = strrpos($dest,'.');
  69.     if (!$i) return '';
  70.     $l = strlen($dest) - $i;
  71.     $ext = substr($dest,$i+1,$l);
  72.      
  73.     switch ($ext)
  74.     {
  75.         case 'jpeg':
  76.         case 'jpg':
  77.         imagejpeg($idest,$dest,$quality);
  78.         break;
  79.         case 'gif':
  80.         imagegif($idest,$dest);
  81.         break;
  82.         case 'png':
  83.         imagepng($idest,$dest);
  84.         break;
  85.     }
  86.  
  87.     imagedestroy($isrc);
  88.     imagedestroy($idest);
  89.  
  90.     return true;
  91. }      
  92.  

(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. //Ставим водяной знак
  3. function watermark($img_o,$type,$watermark_o)
  4.         {
  5.           //Наложим водяной знак на большую картинку
  6.                 $func = 'imagecreatefrom'.$type;
  7.         $img = $func($img_o);
  8.                 $func2='image'.$type;                                                                                                          
  9.                 $img_width     = imagesx($img);
  10.                 $img_height     = imagesy($img);        
  11.                 //if ($img_width>80 && $img_height> 30) {$watermark = imagecreatefrompng('../../../img/watermark_75x10.png');$inst_watermark=true;}
  12.                 $watermark = imagecreatefrompng($watermark_o);
  13.                 // Сохраняем прозрачность
  14.                 if($type == 'png'){
  15.                 $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
  16.                 imagefill($img, 0, 0, $transparent);
  17.                 imagesavealpha($img, true);
  18.             }
  19.                 // получаем значения высоты и ширины водяного знака
  20.                 $watermark_width     = imagesx($watermark);
  21.                 $watermark_height     = imagesy($watermark);
  22.                 // Координаты, куда помещать водяной знак
  23.                 $dest_x = $img_width  - $watermark_width  - 5;
  24.                 $dest_y = $img_height - $watermark_height - 40;
  25.                 //добавляем водяной знак
  26.                 if ($dest_x>0 && $dest_y>0)
  27.                 {
  28.                         imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
  29.                         $func2($img,$img_o);
  30.                 }
  31.                 if ($img) {imagedestroy($img);}
  32.                 if ($watermark) {imagedestroy($watermark);}
  33.                 //Конец добавления водяного зняка для большого файла   
  34.         }
  35.  

(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. //Функция ресайза
  3. function cutImage($source,$required_width,$required_height,$output,$valign = 'center',$halign = 'center') {
  4.             list($original_width, $original_height, $imageType) = getimagesize($source);
  5.             $imageType = image_type_to_mime_type($imageType);
  6.             switch($imageType) {
  7.                 case "image/gif":
  8.                     $src=imagecreatefromgif($source);
  9.                     $type_img = 'gif';
  10.                     break;
  11.                 case "image/pjpeg":
  12.                 case "image/jpeg":
  13.                 case "image/jpg":
  14.                     $src=imagecreatefromjpeg($source);
  15.                     $type_img = 'jpg';
  16.                     break;
  17.                 case "image/png":
  18.                 case "image/x-png":
  19.                     $src=imagecreatefrompng($source);
  20.                     $type_img = 'png';
  21.                     break;
  22.             }
  23.                     //соотношение сторон оригинала
  24.                     $original_ratio = $original_height/$original_width;
  25.                     //соотношение сторон необходимое
  26.                     $required_ratio = $required_height/$required_width;
  27.                    
  28.                     if($original_ratio > $required_ratio) {
  29.                             $resized_ratio = $original_width/$required_width;
  30.                             $new_width = $required_width;
  31.                             $new_height = $original_height/$resized_ratio;
  32.                             $src_x = 0;
  33.                             if($valign == 'center') {
  34.                                     $src_y = ($new_height-$required_height)/2;
  35.                             } elseif($valign == 'top') {
  36.                                     $src_y = 0;
  37.                             } else {
  38.                                     $src_y = $new_height-$required_height;
  39.                             }
  40.                     } else {
  41.                             $resized_ratio = $original_height/$required_height;
  42.                             $new_height = $required_height;
  43.                             $new_width = $original_width/$resized_ratio;
  44.                             if($halign == 'center') {
  45.                                     $src_x = ($new_width-$required_width)/2;
  46.                             } elseif($halign == 'left') {
  47.                                     $src_x = 0;
  48.                             } else {
  49.                                     $src_x = $new_width-$required_width;
  50.                             }
  51.                             $src_y = 0;
  52.                     }
  53.                    
  54.                     $resized_src = imagecreatetruecolor ($new_width, $new_height);
  55.                                         imagealphablending($resized_src, false);
  56.                                         imagesavealpha($resized_src, true);
  57.                     imagecopyresampled($resized_src, $src, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height);
  58.                    
  59.                     $dst = imagecreatetruecolor($required_width, $required_height);
  60.                         imagealphablending($dst , false);
  61.                                         imagesavealpha($dst , true);
  62.             if($type_img == 'png'){
  63.                 $transparent = imagecolorallocatealpha($dst, 0, 0, 0, 127);
  64.                 imagefill($dst, 0, 0, $transparent);
  65.                 imagesavealpha($dst, true);
  66.             }
  67.                     imagecopyresampled($dst, $resized_src, 0, 0, $src_x, $src_y, $required_width, $required_height, $required_width, $required_height);
  68.             switch($imageType) {
  69.                 case "image/gif":
  70.                     imagegif($dst, $output);  
  71.                     break;
  72.                 case "image/png":
  73.                 case "image/x-png":
  74.                     imagepng($dst, $output);  
  75.                     break;
  76.                 default:
  77.                     imagejpeg($dst, $output,100);
  78.             }
  79.            
  80.         }
  81.  
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB