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]   

> Без описания
psevdo
Отправлено: 02 Апреля, 2014 - 19:13:05
Post Id



Гость


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


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




Здравствуйте. Передо мной стоит такая задача . Есть файл с картинкой. Мне нужно вырезать из него кусок. Для этого у меня есть смещение по вертикали и горизонтали, а так же ширина и высота вырезаемой области. Этот кусок мне необходимо сохранить в png файле.

параметры функции:

    1. dir - директория хранения исходного файла
    2. img - имя исходного файла
    3. topPosition - смещение по вертикали (откуда необходимо вырезать)
    4. leftPosition - смещение по горизонтали (откуда необходимо вырезать)
    5. cropWidth - ширина вырезаемой области
    6. cropHeight - высота вырезаемой области

PHP:
скопировать код в буфер обмена
  1.  
  2. private function imageCrop($dir, $img, $prefix, $topPosition, $leftPosition, $cropWidth, $cropHeight) {
  3.  
  4.    list($width, $height, $type) = getimagesize($dir.'/'.$img);
  5.    if(!$width || !$height) return false;
  6.                
  7.    $types = array('gif', 'jpg', 'jpeg', 'png');
  8.    $ext = $types[$type];
  9.                
  10.    $baseName = pathinfo($img);
  11.    $baseName = $baseName['filename'].'.png';
  12.                
  13.    if($ext) {
  14.       switch($ext) {
  15.          case 'gif': $imgRes = imagecreatefromgif($dir.'/'.$img); break;
  16.          case 'jpg':
  17.          case 'jpeg': $imgRes = imagecreatefromjpeg($dir.'/'.$img); break;
  18.          case 'png': $imgRes = imagecreatefrompng($dir.'/'.$img); break;
  19.          default: break;
  20.       }
  21.  
  22.       $imgNew = imagecreatetruecolor($cropWidth, $cropHeight);
  23.       imagecopyresized($imgNew, $imgRes, 0, 0, $topPosition, $leftPosition, $cropWidth, $cropHeight, $width, $height);
  24.       imagepng($imgNew, $dir.$prefix.$baseName);
  25.       imagedestroy($imgNew);
  26.       imagedestroy($imgRes);
  27.       return '/'.$dir.$prefix.$baseName;
  28.    } else {
  29.       echo 'Не корректный формат файла';
  30.       return false;
  31.    }
  32. }
  33.  


Функция работает но некорректно. Вырезание начинается не с нужного места и внизу остается черная полоса. Возможно тут проблемы с пропорциями исходного файла и вырезаемой области. Не могу разобраться. Прошу помощи.

(Отредактировано автором: 02 Апреля, 2014 - 19:16:27)

 
 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