mostrare immagini da una cartella

ho necessità di mettere delle immagini in una cartella e di mostrarne 20 in una pagina .... non ho la minima idea di come trovare tutti i file .jpeg .gif .jpg .png e mostrarli in una pagina come posso fare? ^-^

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Fai una ricerca nel forum, troverai degli script che eseguono la lettura dei file di una cartella.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ok ho trovato ed editato questo :

<?php

$path = "images/";

if ($handle = opendir($path)) {

   $files = array();

   while (false !== ($file = readdir($handle))) {

      if ($file != '.' && $file != '..') {

         $files .= $file;

         echo '<img alt="" src="',$path , $file , '">',"\n <br />";

      }

   }

   if ($files == null) {

      echo "Directory vuota!!<br />\n";

   }

}

?>

ma ho bisogno di mettere le immagini in file per 3 e un massimo di 18 foto .... dato che non è una query :P nn so come fare lol

per le anteprime dato che non so usare la libreria GD nn so come fare...

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Mi sono messo a lavorare su uno script che farà proprio al caso tuo  :coolsmiley:

Spero di finirlo presto e di pubblicarlo in un articolo  :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Stavo scrivendo quando ha risposto Gianni, cmq posto lo stesso, magari può servire:

ok ho trovato ed editato questo :

.....

ma ho bisogno di mettere le immagini in file per 3 e un massimo di 18 foto .... dato che non è una query :P nn so come fare lol

per le anteprime dato che non so usare la libreria GD nn so come fare...

Non so se ho capito esattamente il tuo problema, cmq facendo così, creo un array multidimensionale di 18 record totali e di 3 record per ogni 'indice' dell'array:

$path = "pics/";
$files = array();
$i=0;
$j=0;
if ($handle = opendir($path)) 
{
 
   while (false !== ($file = readdir($handle))) 
   {
      if ($file != '.' && $file != '..') 
      {
        $files[$i][] = $file;
        //echo '<img alt="" src="',$path , $file , '">',"\n <br />";
        $j++;
        
        if($j >= 18)
               break;
        
        
        if($j%3 == 0)
         $i++;
      }//fine if ($file != '.' && $file != '..') 
   }//fine while (false !== ($file = readdir($handle))) 
   
   
   
   if ($files == null) {
   echo "Directory vuota!!<br />\n";
   }

}//fine if ($handle = opendir($path)) 

echo "<pre>";
print_r($files);
echo "</pre>";

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

ci stai riuscendo gianni? mi serve :(

lore il tuo script funziona ma io devo mostrare le immagini non il loro nome  e non sto riuscendo a modificarlo in modo da fargli fare questo

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

A causa dello scarso tempo a mia disposizione non sono riuscito a preparare un articolo ma lo script è pronto. Permette di visualizzare le anteprime delle immagini presenti in una cartella impostata da $path_immagini. Le anteprime vengono create "al-volo" nel caso non siano presenti nella cartella $path_anteprime. Serve quindi l'estensione gd. Il numero delle anteprime mostrate per pagina è impostato dalle variabili $num_righe e $num_colonne. La paginazione è automatica. Non vengono considerate le sottocartelle.

galleria.php

<?php
// Configurazione della galleria
// ---------------------------------

// percorso della cartella contenente le immagini ORIGINALI
$path_immagini = "immagini/";
// percorso della cartella che dovrà contenere le anteprime
$path_anteprime = "anteprime/";

// numero di righe e colonne della tabella che mostrerà le anteprime
$num_righe = 3;
$num_colonne = 4;

// larghezza ed altezza massima delle anteprime
$larghezza_ant = 150;
$altezza_ant = 150;
// ---------------------------------


// provo ad "aprire" la cartella delle immagini originali
$handle = @opendir($path_immagini);

// se c'è stato un errore...
if(!$handle)
die ("Errore nell'apertura della cartella delle immagini '$path_immagini'");

// inizializzo l'array che conterrà i nomi delle immagini
$immagini = array();

// memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali
while (false !== ($file = readdir($handle)))
{
   if ($file != '.' && $file != '..' && strpos($file,'.jpg'))
   {
      if(strpos($file,'.jpg'))
      $immagini[] = $file;
   }
}

// metto in ordine alfabetico le immagini
sort($immagini);

// calcolo il numero dell'ultima pagina
$ultima_pagina = ceil(count($immagini) / ($num_righe * $num_colonne));

// decido che pagina mostrare
if(isset($_GET['pag']))
{
   // se è nell'URL è presente un numero di pagina
   if(is_numeric($_GET['pag']) && $_GET['pag'] > 0 && $_GET['pag'] <= $ultima_pagina)
   {
      // se il numero di pagina indicato è lecito
      $pag_corrente = $_GET['pag'];
   }
   else
   {
      // nell'URL è stato messo un numero di pagina errato.
      // l'utente sta "giocando" con il nostro script !!!
      header('location: galleria.php?pag=1');
      exit;
   }
}
else
{
   // se non è stato specificato nulla via URL mostro la prima pagina
   $pag_corrente = 1;
}

// quale sarà la prima immagine da mostrare nella pagina corrente?
$immagine_iniziale = ($pag_corrente-1) * $num_righe * $num_colonne;

// Costruisco dei link per accedere alla pagina precedente e successiva (se esistono!)
$navigatore = '';
if($pag_corrente > 1)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente-1).'">&lt;&lt; Precedente</a> ';

if($pag_corrente < $ultima_pagina)
$navigatore .= '<a href="galleria.php?pag='.($pag_corrente+1).'">Successiva &gt;&gt;</a>';

// adesso devo costruire la tabella che conterrà le anteprime
$tab_immagini = '';
// il primo cliclo FOR è per costruire le righe
for ($i = 0; $i < $num_righe ; $i++)
{
   // se all'inizio di una riga mi accorgo che non ci sono più immagini da visualizzare
   // allora interrompo le iterazioni
   if(!isset($immagini[($i*$num_colonne) + $immagine_iniziale]))
      break;

   // apro la riga corrente
   $tab_immagini .= '<tr>';

   // il secondo ciclo FOR serve invece a costruire le singole celle apparteneti ad una riga
   for ($j = 0; $j < $num_colonne; $j++)
   {
      // l'indice dell'immagine da mostrare nella cella corrente
      $indice = ($i*$num_colonne) + $j + $immagine_iniziale;

      // se esiste una immagine con questo indice (potrebbero essere finite!)
      if(isset($immagini[$indice]))
      {
         // controllo che esista l'anteprima per l'immagine corrente
         // in caso contrario la creo "al volo"
         if(!file_exists($path_anteprime.$immagini[$indice]))
            crea_anteprima($immagini[$indice],$larghezza_ant,$altezza_ant,$path_immagini,$path_anteprime);

         // ricavo le dimensioni dell'anteprima corrente
         list($width, $height) = getimagesize($path_anteprime.$immagini[$indice]);

         // non mi resta che creare i tag per il link, l'immagine ed i nome dell'immagine
         $cella = '<a href="'.$path_immagini.$immagini[$indice].'">';
         $cella .= '<img src="'.$path_anteprime.$immagini[$indice].'" alt="'.$immagini[$indice].'" height="'.$height.'" width="'.$width.'">';
         $cella .='<br><p align="center">' .  $immagini[$indice] . '</p>';
         $cella .='</a>';
      }
      else
      {
         // sono finite le immagini! Lascio la cella vuota
         $cella = '&nbsp;';
      }

      // metto il contenuto della cella appena creata nella tabella
      $tab_immagini .=  '<td class="cella_immagine"  align="center" valign="middle">'. $cella . '</td>';
   }

   // chiudo la riga corrente
   $tab_immagini .= '</tr>';
}

// tutto il contenuto "dinamico" è stato preparato, devo solo caricare il template che si occuperà di mostrarlo
// per proteggermi dal caricamento del template esternamente allo script definisco una costante...
define('LOAD_TEMPLATE',1);
include('template.php');

// fine dello script
exit;


// funzione per la creazione delle anteprime
function crea_anteprima($nome_immagine,$larghezza_anteprima,$altezza_anteprima,$path_immagini,$path_anteprime)
{
   // ricavo la dimensione dell'immagine originale
   list($larghezza_orig, $altezza_orig) = getimagesize($path_immagini.$nome_immagine);

   if ($larghezza_orig < $altezza_orig) {
      $larghezza_anteprima = ($altezza_anteprima / $altezza_orig) * $larghezza_orig;
   } else {
      $altezza_anteprima = ($larghezza_anteprima / $larghezza_orig) * $altezza_orig;
   }

   // creo una nuova immagine, che conterrà l'anteprima
   $image_p = imagecreatetruecolor($larghezza_anteprima, $altezza_anteprima);

   // carico l'originale
   $image = imagecreatefromjpeg($path_immagini.$nome_immagine);

   // metto nella nuova immagine la "riduzione" dell'originale
   imagecopyresampled($image_p, $image, 0, 0, 0, 0, $larghezza_anteprima, $altezza_anteprima, $larghezza_orig, $altezza_orig);

   // salvo l'anteprima
   imagejpeg($image_p, $path_anteprime.$nome_immagine);
}
?>

template.php

<?php
if(!defined('LOAD_TEMPLATE'))
   exit('Accesso diretto non consentito!');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Galleria immagini</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body {
   font-family: Verdana, Arial, Helvetica, sans-serif;
   font-size: 12px;
   background-color: #CCCCCC;
}
#main_tab {
   border: 2px solid #FFFFFF;
   background-color: #036;
}
.cella_immagine {
   background-color: #FFFFFF;
}
#header_tab {
   background-color: #FFFFFF;
}
img {
   border: none;
}
-->
</style>
</head>

<body>
<table border="0" align="center" cellpadding="5" cellspacing="0" id="main_tab">
  <tr>
    <td>
   <table width="100%"  border="0" cellspacing="5" cellpadding="5" id="header_tab">
      <tr>
        <td><div align="left">Pagina <?php echo $pag_corrente?>/<?php echo $ultima_pagina?> </div></td>
        <td><div align="right"><?php echo $navigatore?></div></td>
      </tr>
    </table>
      <table width="100%"  border="0" cellspacing="5" cellpadding="5">
        <?php echo $tab_immagini?>
      </table></td>
  </tr>
</table>
</body>
</html>

salva entrambi i file in una cartella e modifica il valore delle variabili presenti all'inizio del primo file.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

 ;D nn so che dire , GRAZIE

ps funziona egregiamente , solo che se ne và in timeout per creare le anteprime la prima volta, ma non c'è nessun problema [l'ho testato con 60 immagini 2000*1500 ] e funziona benissimo :D grazie

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Ciao Gianni, intanto grazie a me funziona bene solo un piccolo particolare

se carico foto con l'estensione .jpg le carica

se le carico con l'estensione .JPG (maiuscola non le vede)


// memorizzo in $immagini tutti i nomi delle immagini (JPG) presenti nella cartella degli originali while (false !== ($file = readdir($handle))) {    if ($file != '.' && $file != '..' && strpos($file,'.jpg'))    {       if(strpos($file,'.jpg'))       $immagini[] = $file;    }
 

POTRESTI aiutarmi visto che le reflex automaticamente danno l'estensione  MAIUSCOLA

grazie di tutto

risposto un mese fa
lucamandy
Cambia strpos con stripos, dovrebbe risolvere il tuo problema.Andrea Turso un mese fa
Ecco un esempio: https://gist.github.com/trashofmasters/9632f7e76d2232e5f6d404e079a648d6Andrea Turso un mese fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda