PHP - изменить размер изображения на сервере, прежде чем браузер загрузит его

На сервере хранится файл, который, например, имеет размер 400 х 600 пикселей. Но в разных частях сайтов нам нужна одна и та же картинка разного измерения. Для миниатюры нам обычно требуется 50 х 50 пикселей, и если мы решим загрузить одно и то же изображение с исходным размером, это займет больше времени и загрузка страницы замедлится. Если размер этой картинки будет изменен, ее размер уменьшится (например, от 500 КБ до 50 КБ). Итак, я хочу, чтобы, прежде чем браузер загрузил картинку, сервер должен изменить размер картинки до размеров, требуемых в скрипте PHP.

5 ответов

Решение

Вам нужно поместить код в код миниатюры в новом файле, скажем, image.php, а затем использовать этот скрипт в качестве src тега img с параметрами имени файла изображения, ширины и высоты.

<img src="http://path-to-directory/image.php?img=abc.jpg&width=50&height=50" />

Вам нужно изменить "DSC01088.jpg" на echo $_GET['img']; после надлежащей проверки.

Вам понадобится PHP-библиотека GD, затем посмотрите на это и это, а затем свяжите php-файл, который изменяет размер, а не само изображение.

Также обратите внимание на предложение neeraj, чтобы вы могли изменить его размер при загрузке, чтобы повысить производительность.

В случае, если на вашем хосте отсутствует PHP GD - что крайне маловероятно - вам стоит взглянуть на это или это.

Да, с расширением PHP GD2. Вот краткое руководство

Используйте GD Library для создания миниатюр

сначала получить список всех изображений в папке

 function thumb()
 {
     $img_dir_path='images/';
     $thumb_dir_path='images/thumbs/';

     $img_array=GLOB($img_dit_path.'*.{jpg,jpeg}',GLOB_BRACE);

     foreach($img_array as $img)
     {
       list($path,$file)=explode('/', $img);
       list($fileName, $extension)=explode('.',$file);

        $thumb-file=$thumb_di_path . $fileName. '-thumb.jpg';

         if(file_exists($thumb-file))
         {
               //do nothing 
         }
         else 
         {
            //create file using GD and set width and height proportionally
            // Example $width=$orig_width * 0.1; $height =$orig_height * 0.1  
         }
     } 
 }

Да, конечно!

Примеры кода изменения размера изображения Google для PHP

Затем создайте скрипт загрузки и вызовите его с параметрами, например:

http:///www.mysite.com/image.php?image=path/to/my/image.png&width=50&height=50&crop=1

Сценарий загрузит изображение, изменит его размер до заданной ширины и высоты и при желании обрежет его, а затем отобразит соответствующие заголовки для загрузки...

Есть много способов сделать это... Иногда лучше использовать Google, прежде чем спрашивать здесь, на SE...

Другие вопросы по тегам