Newsgroup: it.comp.www.php
Titolo: creare thumb di jpg, problemi con IE

ciao a tutti
Ho preso spunto da un esempio trovato su 
php.net
 per creare thumb di
immagini lette da una cartella. la funzione cerca nella cartella data i
jpeg, li apre, crea la thumb col "ImageCopyResized", visualizza con
ImageJpeg e distrugge le variabili. Tutto funziona alla perfezione con
Firefox, se provo con IE invece no: quando la funzione incontra nella
cartella immagini ad alta risoluzione (maggiori di 1600x1200, oltre
600k ciascuna) mi manda in palla Apache e ritorna messaggi di memoria
esaurita (ho mezzo giga di ram sul server in questione). Dall'effetto
"visivo" credo che IE provi ad aprire tutte le foto in una volta:
infatti Firefox visualizza una thumb alla volta in fila, IE invece
inizia a visualizzarne una qui e una li' e poi mi si blocca tutto.
C'e' modo di risolvere il problema?
uso php 4.3.10 ed apache 1.3.33, montati dal pacchetto unico di easyphp
1.8
grazie!


Eh, bč stica@@i!! php ha si le funzioni per resizare immagini, ma usarne 
di cosi grosse č normale che facciano incragnare apache...

 
hmm potresti tentare di introdurre delle pause randomizzate con 
sleep(rand(xsec)). Naturalmente dipende sempre dalla dimensione e la 
quantita dei file.

 di cosi grosse è normale che facciano incragnare apache...
credo che non hai capito... il problema di memoria insufficiente lo da
quando faccio $img=CreateImageFromJpeg(), quando cioe' scompatta il
malloppo di oltre 1600x1200 in memoria, non quando fa il resize; e
cmnq, perche' su Firefox tutto funziona a meraviglia?
[OT] gia che la roba targata microsoft mi sta sul gozzo, questo non mi
aiuta certo a cambiare opinione.

 quantita dei file.
mmh... e' un tentativo che non ho fatto, potrebbe cambiare qualcosa.
tra l'altro ho provato ad aumentare tempo di esecuzione script (da 30
sec. a 60 sec.) e memoria per script (da 8mega a 64mega) su php.ini,
senza alcun miglioramento.
grazie dell'aiuto!

 inizia a visualizzarne una qui e una li' e poi mi si blocca tutto.
Possiamo vedere il codice, o è TOP SECRET?
-- 
Armand Federico
www.armand.it

> Possiamo vedere il codice, o è TOP SECRET?
certamente, posto tutto il file php:
<?php
  $cartella = 'c:\foto\2005\\';
  $dh = opendir($cartella);
  $vetfiles = array();
  while (($file = readdir($dh)) !== false) {
    if (eregi(".jpg",$file) || eregi(".gif",$file) ||
eregi(".png",$file)) {
      $vetfiles[] = $file;
    }
  }
  if (isset($_GET['thumb'])) $thumb = $_GET['thumb'];
  else $thumb = '';
  if (isset($_GET['show'])) $show = $_GET['show'];
  else $show = '';
  if ($show) {
    showimage($show);
  }
  else if ($thumb) {
    thumbImage($thumb);
  }
  else {
    createThumbTable($vetfiles);
  }
////////////
function createThumbTable($vetfiles) {
  $contriga = 1;
  $nfoto = count($vetfiles);
  echo '<table border="0" cellpadding="5" bgcolor="white"><tr>';
  for ($i=0; $i<$nfoto; $i++) {
    echo '<td align="center" valign="middle"><a
href="index.php?show='.$vetfiles[$i].'" target="_blank"><img
src="index.php?thumb='.$vetfiles[$i].'" border="0"></a></td>';
    $contriga++;
    if ($contriga==5) {
      echo '</tr><tr>';
      $contriga=1;
    }
  }
  echo '</tr></table>';
}
////////////
function thumbImage($thumb) {
  global $cartella;
  $filename = $cartella.$thumb;
  $img = imagecreatefromjpeg($filename);
  $larg = imagesx($img);
  $alt = imagesy($img);
  if ($larg>$alt) {
    $largt = 150;
    $altt = 150*$alt/$larg;
  }
  else {
    $altt = 150;
    $largt = 150*$larg/$alt;
  }
  $imgt = imagecreatetruecolor($largt, $altt);
  imagecopyresized($imgt, $img, 0, 0, 0, 0, $largt, $altt, $larg,
$alt);
  header("Content-type: image/jpeg");
  imagejpeg($imgt,'',60);
  imagedestroy($img);
  imagedestroy($imgt);
}
////////////
function showimage($show) {
  global $cartella;
  $filename = $cartella.$show;
  $img = imagecreatefromjpeg($filename);
  $string="
www.fodox.it
";
  $font=4;
  $width=(ImageFontWidth($font)*strlen($string))+8;
  $height=ImageFontHeight($font)+4;
  $imgscritta = @imagecreate($width,$height);
  $background_color = imagecolorallocate($imgscritta, 255, 255, 255);
  $text_color = imagecolorallocate ($imgscritta, 0,0,0);
  imagestring ($imgscritta, $font, 4, 1,  $string, $text_color);
  imagecopy($img, $imgscritta, 0,0,0,0,$width, $height);
  imagedestroy($imgscritta);
  header("Content-type: image/jpeg");
  imagejpeg($img);
  imagedestroy($img);
}
?>