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]   

> Без описания
DmitryVL
Отправлено: 30 Июня, 2020 - 11:21:33
Post Id


Новичок


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


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




Всем добрый день. Имеется большое количество папок с фото. Просмот этих папок происходит через

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $dir = 'img/';
  4.  
  5.  
  6. function scan(string $dir) {
  7.         return array_diff(scandir($dir), ['.','..']);
  8. }
  9.  
  10.  
  11. if(isset($_GET['product_id'])) {
  12.         $product_folder = $dir.$_GET['product_id'];
  13.         if( !is_dir($product_folder) ) {
  14.                 die('Папка не существует');
  15.         }
  16.  
  17.         $files = scan($product_folder);
  18.         if( empty($files) ) {
  19.                 die('Нет фотографий');
  20.         }
  21.  
  22.         foreach( $files as $file ) {
  23.                 $path = $product_folder.'/'.$file;
  24.                 echo "<a href=\"{$path}\">
  25.                         <img src=\"{$path}\" style=\"width: 100px; height:100px;\">
  26.                 </a>";
  27.         }
  28. } else {
  29.         $folders = scan($dir);
  30.  
  31.         if(empty($folders)) {
  32.                 echo 'Папка пустая';
  33.         } else {
  34.                 foreach($folders as $folder) {
  35.                         echo "<p><a href=\"?product_id={$folder}\">{$folder}</a></p>";
  36.                 }
  37.         }
  38. }


всё хорошо, но изображения загружаются полностью все сразу, далее сжимаются до размера миниатюры.
Возможно ли подключить скрипт для просмотра фото, так что бы он загружал миниатюры меньшего качества.
 
 Top
andrewkard
Отправлено: 01 Июля, 2020 - 07:12:01
Post Id


Участник


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


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




Обычно при загрузке картинок на сервер если нужно параллельно создают превьюшку и ее выводят там где нужно при нажатии на которую показывают оригинальное изображение. В Вашем случае можно пройтись скриптом, создать превью параллельно записывая в путь к превью и путь к оригиналу. Создать какой то хэш от пути оригинала что бы быстрее искать.

Еще вариант ничего не менять особо, а сделать ленивую загрузку, когда сервер отдает все картинки как 1 пиксель а на JS заменяем путь из data-src в src, т.е.
PHP:
скопировать код в буфер обмена
  1. <img class="img" src="/1px.png" data-src="<?=$path?>">


стили вынести в таблицу стилей
 
 Top
Vladimir Kheifets
Отправлено: 01 Июля, 2020 - 12:44:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




DmitryVL пишет:
Всем добрый день. Имеется большое количество папок с фото. Просмот этих папок происходит через

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $dir = 'img/';
  4.  
  5.  
  6. function scan(string $dir) {
  7.         return array_diff(scandir($dir), ['.','..']);
  8. }
  9.  
  10.  
  11. if(isset($_GET['product_id'])) {
  12.         $product_folder = $dir.$_GET['product_id'];
  13.         if( !is_dir($product_folder) ) {
  14.                 die('Папка не существует');
  15.         }
  16.  
  17.         $files = scan($product_folder);
  18.         if( empty($files) ) {
  19.                 die('Нет фотографий');
  20.         }
  21.  
  22.         foreach( $files as $file ) {
  23.                 $path = $product_folder.'/'.$file;
  24.                 echo "<a href=\"{$path}\">
  25.                         <img src=\"{$path}\" style=\"width: 100px; height:100px;\">
  26.                 </a>";
  27.         }
  28. } else {
  29.         $folders = scan($dir);
  30.  
  31.         if(empty($folders)) {
  32.                 echo 'Папка пустая';
  33.         } else {
  34.                 foreach($folders as $folder) {
  35.                         echo "<p><a href=\"?product_id={$folder}\">{$folder}</a></p>";
  36.                 }
  37.         }
  38. }


всё хорошо, но изображения загружаются полностью все сразу, далее сжимаются до размера миниатюры.
Возможно ли подключить скрипт для просмотра фото, так что бы он загружал миниатюры меньшего качества.

Добрый день!
Вы можете подключить PHP скрипт для создания миниатюр.
и можете запускать его при закачки оригиналов на сервер и сохраненять их в папке thumbs, либо создавать их "налету" из оригиналов без сохранения.
Это две функция. makeQThumb создаёт квадратные миниатюры, makeQThumb создаёт миниатюры с пропорциями оригинала.
Спойлер (Отобразить)

Если "налету", то пишите
PHP:
скопировать код в буфер обмена
  1.  
  2. //MyTuhm.php
  3. makeThumb($file, 250, 100);
или
PHP:
скопировать код в буфер обмена
  1.  
  2. //MyTuhm.php
  3. makeQThumb($file, 250);

Удачи!
 
 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