можно ли изменить ширину картинки посредством php?

Аватара пользователя
E-mail

можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

например есть картинка размером 1024 на *

мы обычно лезем в фотожоп кс и меняем его на 300 например и высоту какая получится,

а можноли это автоматизировать через php?



т.е. например при аплодиньи картинок на сервер чтобы они уменьшались?
Аватара пользователя
E-mail

Re: можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

Читаем про библиотеку GD, в основном, она везде поддерживается (я имею в виду хостинг с PHP)

В мануале функции этой библиотеки стоят в главе "Функции изображений"

В данном конкретном случае можно например использовать imagecopyresized(), эта функция не только меняет размеры, но ещё при этом следит и за качеством (которое может испортиться при изменении размеров картинки)



Официальная страница
этой библиотеки, но в интернете есть туториалы, в том числе и конкретное использование вместе с PHP,
например тут
Аватара пользователя
E-mail

Re: можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

а ктонибудь подсакажет откуда этот модуль скачать и как поставить под винд и линкс?
Аватара пользователя
E-mail

Re: можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

под win -
"Как установить модуль GD для PHP"


как в Linux - как ставить будем? (компилим, пакеты, apt... )

для все случаев phpinfo(); (на предмет - не стоит ли уже Изображение)
Аватара пользователя
mar

Re: можно ли изменить ширину картинки посредством php?

Сообщение mar »

E-mail

Есть куча б/скриптов для этого.



Вот например (с _php5.ru)

Код: Выделить всё

<?php

/***********************************************************************************

Функция img_resize(): генерация thumbnails

Параметры:

  $src             - имя исходного файла

  $dest            - имя генерируемого файла

  $width, $height  - ширина и высота генерируемого изображения, в пикселях

Необязательные параметры:

  $rgb             - цвет фона, по умолчанию - белый

  $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)

***********************************************************************************/

function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)

{

  if (!file_exists($src)) return false;



  $size = getimagesize($src);



  if ($size === false) return false;



  // Определяем исходный формат по MIME-информации, предоставленной

  // функцией getimagesize, и выбираем соответствующую формату

  // imagecreatefrom-функцию.

  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));

  $icfunc = "imagecreatefrom" . $format;

  if (!function_exists($icfunc)) return false;



  $x_ratio = $width / $size[0];

  $y_ratio = $height / $size[1];



  $ratio       = min($x_ratio, $y_ratio);

  $use_x_ratio = ($x_ratio == $ratio);



  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);

  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);

  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);

  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);



  $isrc = $icfunc($src);

  $idest = imagecreatetruecolor($width, $height);



  imagefill($idest, 0, 0, $rgb);

  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 

    $new_width, $new_height, $size[0], $size[1]);



  imagejpeg($idest, $dest, $quality);



  imagedestroy($isrc);

  imagedestroy($idest);



  return true;



}

?>


Использование

Код: Выделить всё

<?php



  require ('imgresize.php');

  if (img_resize('original.jpg', 'small.jpg', 100, 60)) // 100 - новая ширина 60 - высота

    echo 'Image resized OK';

  else

    echo 'Resize failed!';



?>


А это тоже самое, но размер меняется в % (слегка переделал для своих нужд)

Код: Выделить всё

<?php

function img_resize($src, $dest, $new_size, $rgb=0xFFFFFF, $quality=100)

{

  if (!file_exists($src)) return false;



  $size = getimagesize($src);



  if ($size === false) return false;



  // Определяем исходный формат по MIME-информации, предоставленной

  // функцией getimagesize, и выбираем соответствующую формату

  // imagecreatefrom-функцию.

  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));

  $icfunc = "imagecreatefrom" . $format;

  if (!function_exists($icfunc)) return false;



    if($new_size>100) $new_size=40;//  эту строчку можно убрать, если надо увеличивать

    $width= $size[0]* $new_size/100;

    $height=$size[1]* $new_size/100;





  $x_ratio = $width / $size[0];

  $y_ratio = $height / $size[1];



  $ratio       = min($x_ratio, $y_ratio);

  $use_x_ratio = ($x_ratio == $ratio);



  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);

  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);

  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);

  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);



  $isrc = $icfunc($src);

  $idest = imagecreatetruecolor($width, $height);



  imagefill($idest, 0, 0, $rgb);

  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 

    $new_width, $new_height, $size[0], $size[1]);



  imagejpeg($idest, $dest, $quality);



  imagedestroy($isrc);

  imagedestroy($idest);



  return true;



}

?>


Соответственно использование

Код: Выделить всё

<?php



  require ('imgresize.php');

  if (img_resize('original.jpg', 'small.jpg', 60)) // здесь 60 - это проценты от оригинала

    echo 'Image resized OK';

  else

    echo 'Resize failed!';



?>
Аватара пользователя
mar

Re: можно ли изменить ширину картинки посредством php?

Сообщение mar »

E-mail

Есть куча б/скриптов для этого.



Вот например (с _php5.ru)

Код: Выделить всё

<?php

/***********************************************************************************

Функция img_resize(): генерация thumbnails

Параметры:

  $src             - имя исходного файла

  $dest            - имя генерируемого файла

  $width, $height  - ширина и высота генерируемого изображения, в пикселях

Необязательные параметры:

  $rgb             - цвет фона, по умолчанию - белый

  $quality         - качество генерируемого JPEG, по умолчанию - максимальное (100)

***********************************************************************************/

function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=100)

{

  if (!file_exists($src)) return false;



  $size = getimagesize($src);



  if ($size === false) return false;



  // Определяем исходный формат по MIME-информации, предоставленной

  // функцией getimagesize, и выбираем соответствующую формату

  // imagecreatefrom-функцию.

  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));

  $icfunc = "imagecreatefrom" . $format;

  if (!function_exists($icfunc)) return false;



  $x_ratio = $width / $size[0];

  $y_ratio = $height / $size[1];



  $ratio       = min($x_ratio, $y_ratio);

  $use_x_ratio = ($x_ratio == $ratio);



  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);

  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);

  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);

  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);



  $isrc = $icfunc($src);

  $idest = imagecreatetruecolor($width, $height);



  imagefill($idest, 0, 0, $rgb);

  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 

    $new_width, $new_height, $size[0], $size[1]);



  imagejpeg($idest, $dest, $quality);



  imagedestroy($isrc);

  imagedestroy($idest);



  return true;



}

?>


Использование

Код: Выделить всё

<?php



  require ('imgresize.php');

  if (img_resize('original.jpg', 'small.jpg', 100, 60)) // 100 - новая ширина 60 - высота

    echo 'Image resized OK';

  else

    echo 'Resize failed!';



?>


А это тоже самое, но размер меняется в % (слегка переделал для своих нужд)

Код: Выделить всё

<?php

function img_resize($src, $dest, $new_size, $rgb=0xFFFFFF, $quality=100)

{

  if (!file_exists($src)) return false;



  $size = getimagesize($src);



  if ($size === false) return false;



  // Определяем исходный формат по MIME-информации, предоставленной

  // функцией getimagesize, и выбираем соответствующую формату

  // imagecreatefrom-функцию.

  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));

  $icfunc = "imagecreatefrom" . $format;

  if (!function_exists($icfunc)) return false;



    if($new_size>100) $new_size=40;//  эту строчку можно убрать, если надо увеличивать

    $width= $size[0]* $new_size/100;

    $height=$size[1]* $new_size/100;





  $x_ratio = $width / $size[0];

  $y_ratio = $height / $size[1];



  $ratio       = min($x_ratio, $y_ratio);

  $use_x_ratio = ($x_ratio == $ratio);



  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);

  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);

  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);

  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);



  $isrc = $icfunc($src);

  $idest = imagecreatetruecolor($width, $height);



  imagefill($idest, 0, 0, $rgb);

  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 

    $new_width, $new_height, $size[0], $size[1]);



  imagejpeg($idest, $dest, $quality);



  imagedestroy($isrc);

  imagedestroy($idest);



  return true;



}

?>


Соответственно использование

Код: Выделить всё

<?php



  require ('imgresize.php');

  if (img_resize('original.jpg', 'small.jpg', 60)) // здесь 60 - это проценты от оригинала

    echo 'Image resized OK';

  else

    echo 'Resize failed!';



?>
Аватара пользователя
E-mail

Re: можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

Доки
тут
. Там же и скачать. В доках вариации: установить, обновить - выбираем по вкусу.
Аватара пользователя
Prisoner

Re: можно ли изменить ширину картинки посредством php?

Сообщение Prisoner »

кстати вопрос все есче в силе: с видио работает какнибудь?
Аватара пользователя
E-mail

Re: можно ли изменить ширину картинки посредством php?

Сообщение E-mail »

кстати вопрос все есче в силе: с видио работает какнибудь?
Ответить

Вернуться в «Вебмастеру»