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
Форумы портала PHP.SU :: Версия для печати :: Размер фото
Форумы портала PHP.SU » » Вопросы новичков » Размер фото

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

1. DmitryVL - 30 Июня, 2020 - 11:21:33 - перейти к сообщению
Всем добрый день. Имеется большое количество папок с фото. Просмот этих папок происходит через

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. }


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

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


стили вынести в таблицу стилей
3. Vladimir Kheifets - 01 Июля, 2020 - 12:44:44 - перейти к сообщению
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 создаёт миниатюры с пропорциями оригинала.
Спойлер (Отобразить)

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

Удачи!

 

Powered by ExBB FM 1.0 RC1