L'immagine “” non può essere visualizzata poiché con

Errore in PHP

« Older   Newer »
 
  Share  
.
  1. IAL32
     
    .

    User deleted


    Questa è l'immagine incriminata: http://ial32.altervista.org/rand_img/random2.png
    CODICE
    <?php
           $urlLista = 'lista.txt';
           $lista = preg_split('/rn|r|n/', file_get_contents($urlLista));
           $value = headerImg(immagineRandom($lista));
           header($value['header']);
           function aggiustaLista($lista) {
                   foreach($lista as $img) {
                           if(!preg_match('/([^s]+(.(?i)(jpg|png|gif))$)/', $img, $match)) {
                                   unset($lista[$img]);
                           }
                   }
                   $nuovaLista = array_fill(0, 1, $lista);
                   $nuovaLista = $nuovaLista[0];
                   return $nuovaLista;
           }
           function immagineRandom($lista) {
                   $value = null;
                   $lista = aggiustaLista($lista);
                   $minimo = 0; #il valore minimo
                   $massimo = count($lista) -1; #il valore massimo, definito dal numero di elementi nell'array $lista
                   #sottraiamo 1, perché altrimenti avremmo un errore per il quale l'index più alto non è definito(non esiste)
                   if($massimo == 0) { #quando la lista è vuota
                           die('Non ci sono immagini nella lista'); #Facciamo vedere un messaggio di errore
                   } else {
                           $int = rand($minimo, $massimo);
                           $img = $lista[$int];
                           preg_match('/([^s]+(.(?i)(jpg|png|gif))$)/', $img, $match);
                           $est = $match[2];
                           $value = array('estensione'=>$est, 'url'=>$img);
                   }
                   return $value;
           }
           function headerImg($arr) {
                   $base = 'Content-Type: ';
                   $est = $arr['estensione'];
                   $url = $arr['url'];
                   $ctype = null;
                   $header = null;
                   switch($est) {
                           case '.gif':
                                   $ctype = 'image/gif';
                                   $header = $base . $ctype;
                                   break;
                           case '.png':
                                   $ctype = 'image/png';
                                   $header = $base . $ctype;
                                   break;
                           case '.jpg':
                           case '.jpeg':
                                   $ctype = 'image/jpeg';
                                   $header = $base . $ctype;
                                   break;
                   }
                   return array('header'=>$header, 'ctype'=>$ctype, 'url'=>$url, 'est'=>$est);
           }
           switch($value['est']) {
                   case '.gif':
                           $immagine = imagecreatefromgif($value['url']) or die('GIF parte 1');
                           break;
                   case '.png':
                           $immagine = imagecreatefrompng($value['url']) or die('PNG parte 1');
                           break;
                   case '.jpg':
                   case '.jpeg':
                           $immagine = imagecreatefromjpeg($value['url']) or die('JPEG parte 1');
                           break;
           }
           imagealphablending($immagine, true) or die('imagealphablending');
           imagesavealpha($immagine, true) or die('ImageSaveAlpha');
           switch($value['est']) {
                   case '.gif':
                           $immagine = imagegif($immagine) or die('GIF parte 2');
                           break;
                   case '.png':
                           $immagine = imagepng($immagine) or die('PNG parte 2');
                           break;
                   case '.jpg':
                   case '.jpeg':
                           $immagine = imagejpeg($immagine) or die('JPEG parte 2');
                           break;
           }
           imagedestroy($immagine) or die('Image Destroy');
    ?>


    Per chi vuole anche il syntax:
    http://pastebin.com/embed_iframe.php?i=Gvsud1HE
    L'errore sembra essere causato(anzi, ne sono piuttosto convinto) dall'header.
    Ho aggiunto dei die() per eventualmente evidenziare gli errori...
    Di solito non lavoro molto con le immagini, quindi non siate clementi e tartassatemi di insulti :P
     
    Top
    .
  2.  
    .
    Avatar

    0x80

    Group
    Best Users
    Posts
    1,346
    Location
    Dunno

    Status
    Anonymous
    La tua regexp per esplodere riga per riga il file e' scorretta(ed e' pure una soluzione molto brutta utilizzare le regexp per questo tipo di cose), anyway questa e' corretta:

    CODE
    /((\r?\n)|(\r\n?))/
     
    Top
    .
1 replies since 14/1/2013, 15:40   82 views
  Share  
.