Autor Zpráva
Petr_D
Profil *
Dobrý den,
mám problém a prosím o radu. Týká se php kodu, který uvádím níže. Slouží k automatickému načtení fotek z určité složky a vytvoření jejich náhledů. Bohužel první náhled v řadě se neshoduje s fotkou, která se objeví po kliknutí, ostatní jsou v pořádku. Kod jsem našel v nějaké diskuzi a vůbec mu nerozumím, pokud mi pomůžete budu moc rád.


<?php 
$nazev_slozky="nějaká složka"; 
$slozka=opendir($nazev_slozky); 
if($slozka==false) die; 
while($soubor=readdir($slozka)) { 
if($soubor==".." || $soubor==".") continue; 
if(eregi("nahled_", $soubor)) continue; 
if(eregi("jpg", $soubor)) { 
$obrazky[]=$soubor; 
} 
} 
closedir($slozka); 
$pocet_obrazku=count($obrazky); 
$i=0; 
for($i; $i<$pocet_obrazku; ++$i) { 
list($sirka, $vyska)=getimagesize($nazev_slozky."/".$obrazky[$i]); 
$nova_sirka=196; 
$nova_vyska=147; 
$blank=imagecreatetruecolor($nova_sirka, $nova_vyska); 
$zdroj=imagecreatefromjpeg($nazev_slozky."/".$obrazky[$i]); 
sort($obrazky);
imagecopyresized($blank, $zdroj, 0, 0, 0, 0, $nova_sirka, $nova_vyska, $sirka, $vyska); 
imagejpeg($blank, $nazev_slozky."/nahled_".$obrazky[$i], 100); 
echo "<a href=\"".$nazev_slozky."/".$obrazky[$i]."\" rel=\"lightbox[node_images]\"><img src=\"".$nazev_slozky."/nahled_".$obrazky[$i]."\" alt=\"".$obrazky[$i]."\" /></a>&nbsp;\n";
} 
?>
stepanka
Profil *
Petr_D
Mě ten Tvůj kód funguje naprosto v pořádku. Zkus zkontrolovat složku s fotkama, nebo zkus jinou složku, jiné fotky.. Mělo by Ti to normálně jít..
Alphard
Profil
Petr_D:
Jestli jsem něco nepřehlédl, tak tohle generuje nové náhledy při každém načtení stránky a dělá to několik dalších drobnějších zbytečností.

Kód je nutné rozdělit do dvou částí. První bude administrace, která zajistí vytvoření miniatur a druhá část potom už jenom vypíše odkazy.

PS: trochu jsme to odsadil, takhle je to přehlednější
<?php
$nazev_slozky="nějaká složka";
$slozka=opendir($nazev_slozky);
if($slozka==false) die;
  while($soubor=readdir($slozka))
  {
    if($soubor==".." || $soubor==".") continue;
    if(eregi("nahled_", $soubor)) continue;
    if(eregi("jpg", $soubor))
    {
      $obrazky[]=$soubor;
    }
  }
  closedir($slozka);
  $pocet_obrazku=count($obrazky);
  sort($obrazky);
  $i=0;
  for($i; $i<$pocet_obrazku; ++$i)
  {
    list($sirka, $vyska)=getimagesize($nazev_slozky."/".$obrazky[$i]);
    $nova_sirka=196;
    $nova_vyska=147;
    $blank=imagecreatetruecolor($nova_sirka, $nova_vyska);
    $zdroj=imagecreatefromjpeg($nazev_slozky."/".$obrazky[$i]);
    imagecopyresized($blank, $zdroj, 0, 0, 0, 0, $nova_sirka, $nova_vyska, $sirka, $vyska);
    imagejpeg($blank, $nazev_slozky."/nahled_".$obrazky[$i], 100);
    echo "<a href=\"".$nazev_slozky."/".$obrazky[$i]."\" rel=\"lightbox[node_images]\"><img src=\"".$nazev_slozky."/nahled_".$obrazky[$i]."\" alt=\"".$obrazky[$i]."\" /></a>&nbsp;\n";
  }
?>


Zmíněný problém vyřešíte záměnou řádků 21 a 22 (v mém kódu 24 a 25), ale je to cesta do pekel.
Petr_D
Profil *
Kod jsem zkoušel s několika složkama a výsledek byl vždy stejný. Fotky jsem i přejmenovával a mazal exif data, nic nepomohlo.
No, jdu bádat dál. Zkusím i cestu do pekel :-) Děkuji vám za ochotu.
Alphard
Profil
Petr_D:
Zkusím i cestu do pekel :-)
Když na to tak koukám, tak nám diskuse špatně čísluje řádky, ať to nekomplikuji, myslel jsem tyhle dva:
$zdroj=imagecreatefromjpeg($nazev_slozky."/".$obrazky[$i]);
sort($obrazky);


ale lepší bude udělat to ještě trochu jinak, zkopírujte si kód z mého předchozího příspěvku, upravím to tam.
Petr_D
Profil *
100% OK. Naprosto v pořádku . Děkuji za pomoc, rychlost i ochotu.
stepanka
Profil *
zajímalo by mě, kde byla chyba...
Alphard
Profil
stepanka:
Tak se podívej na ty dva řádky :-)

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: