Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1

    Elaborazione immagini e tempistica

    Dirò subito che la pagina di cui vorrei parlare, fondamentalmente funziona.
    Tuttavia (un po' da sempre) mi trovo un problema di ritardi che non so bene come classificare, né tantomeno come risolvere.
    L'idea è leggere un file immagine sul PC, spedirla al server magari ridimensionata e visualizzarla in ritorno alle dimensioni richieste.
    Il codice mi pare discretamente semplice. Ecco una descrizione schematica:
    Codice PHP:
    <?
    $immagine 
    '/images/immagine.jpg';
    $absolut_immagine realpath($immagine);
    if (
    $_POST['loader']) {
    if (! 
    $_POST['altezza']) $altezza 540; else $altezza $_POST['altezza'];
    // controllo che non ci siano stati errori nell'upload (codice = 0) 
    if (! empty($_FILES['uploadfile']['tmp_name'])) {
     
    $load->load_image ($_FILES['uploadfile']['tmp_name'], $absolut_immagine$altezza);
     }

    list(
    $width$height$type$attr) = getimagesize($absolut_immagine);
    echo 
    'Dimensioni immagine: ' $width ' x ' $height '<br /><br />';
    echo 
    '<img src="' $immagine '" width="' $display_width '" height="' $display_height '" />';
    ?>
    <form name="upload" method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="loader" value="true"><br />
    <label>Altezza immagine<br>
      <input type="text" name="altezza" value="540"></label>
    <input type="file" name="uploadfile">
    <input type="submit" name="go" value="Carica">
    </form>
    Resta da rivelare la sola funzione $load->load_image, che riporto qui, per chi avesse voglia di leggersela, e fin da adesso ringrazio:
    Codice PHP:
    class load_images {
    public function 
    load_image ($originale$copia$altezza false$larghezza false) {
     list(
    $width$height$type$attr) = getimagesize($originale);
     if ((! 
    $altezza) && (! $larghezza)) {
      
    $altezza $height; }
     if (! 
    $larghezza) {
      
    $larghezza round($width $altezza $height);
      }
     if (! 
    $altezza) {
      
    $altezza round($height $larghezza $width);
     }
     if (! 
    $reduced imagecreatetruecolor($larghezza$altezza)) die ('problema creazione nuova immagine');
     if (! 
    $source $this->get_img_resource($originale)) die ('errore su immagine sorgente');
     
    imagealphablending($reducedfalse);              // per mantenere la trasparenza in PNG
     
    imagecopyresized($reduced$source0000$larghezza$altezza$width$height);  // Salvo l'immagine (eventualmente) ridimensionata
     
    switch ($type) {
      case 
    IMAGETYPE_GIF:
       
    imagegif($reduced$copia);
       break;
      case 
    IMAGETYPE_JPEG:
       
    imagejpeg($reduced$copia85);
       break;
      case 
    IMAGETYPE_PNG:
       
    imagesavealpha($reducedtrue);
       
    imagepng($reduced$copia0PNG_NO_FILTER);
       break;
      default:
       die (
    'tipo immagine non supportato');
     return;
      }
     }

    private function 
    get_img_resource ($img_address) {
     list(
    $width$height$type$attr) = getimagesize($img_address);
     switch (
    $type) {
     case 
    IMAGETYPE_GIF:
      return 
    imagecreatefromgif ($img_address);
      break;
     case 
    IMAGETYPE_JPEG:
      return 
    imagecreatefromjpeg ($img_address);
      break;
     case 
    IMAGETYPE_PNG:
      return 
    imagecreatefrompng ($img_address);
      break;
     default:
      die (
    'tipo immagine non supportato');
     }
    }

    Orbene, la domanda è questa:
    come mai, data la struttura di cui sopra, qualche volta la pagina mi ritorna con l'immagine modificata, ma molto spesso no? Quasi sempre mi ricompare l'immagine vecchia e solo facendo un refresh della pagina mi appare la nuova immagine!
    Che accidenti ci si può fare?
    Sarò eternamente grato a chi saprà spiegarmi gli intimi recessi di questa gestione immagini!
    Ultima modifica di jumborex; 22-02-2014 a 16:26
    Non ho sbagliato: ho invece scoperto mille modi per fare lampadine che non funzionano...
    (Thomas Alva Edison)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.