Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problemi con GD

  1. #1

    Problemi con GD

    ciao ragazzi sto cercando di far visualizzare un immagine tramite l'ex GD da ieri el browser mi da questo errore:

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/flux/flux/index.php:4) in /var/www/flux/flux/class.WebImage.php on line 65

    oltretutto successivamente all'errore viene visualizzata una sequenza di caratteri tipo questa per un bel po' di righe:
    br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ���������........

    vi riporto la line 65 della classe webimage per chiarezza.:

    switch ($this->type)
    {
    case 'image/jpeg':
    64 header("Content-type: image/jpeg");
    imagejpeg($this->gdresource);
    break;

    ps.:ho provato a decommentare la line 64 ma da sempre la sequenza di caratteri indefinita

  2. #2
    Prima della riga che contiene:
    switch ($this->type)
    non deve essere inviato al browser nessun carattere
    ... neanche un blank!
    Posta il sorgente della pagina e ...
    ricordati di racchiuderlo fra i tags [php] e [/php] !!!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Codice PHP:
    public function display()
        {
        switch (
    $this->type)
          {
           case 
    'image/jpeg':
              
    header("Content-type: image/jpeg");
              
    imagejpeg($this->gdresource);
           break;
           case 
    'image/png':
              
    header("Content-type: image/png");
              
    imagepng($this->gdresource);
           break;
           case 
    'image/gif':
           
    // Convert back to palette
            
    if (imageistruecolor($this->gdresource))
            {
              
    imagetruecolortopalette($this->gdresourcefalse256);
            }
              
    header("Content-type: image/gif");
              
    imagegif($this->gdresource);
           break;
          }
       }

    questa sopra è la funzione display della classe che viene chiamata nel sorgente qui sotto

    Codice PHP:
    $img = new WebImage();
         
    $img ->load('img/bann.jpeg'); 
         
    $img ->display(); 

  4. #4
    Non mi sono spiegato bene.
    Il problema è che il php invia al browser qualcosa PRIMA di eseguire la:
    Codice PHP:
    $img ->display(); 
    È quello, che devi cercare!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  5. #5
    ok. ci provo:

    prima della funzione "display" php lancia la funzione load così
    Codice PHP:
    $img ->load('ulr-file'); 
    questa funzione esegue un controllo sull'estenzione del file, lancia la funzione imagecreatefromjpeg e alla fine imagesavealfha
    riporto il codice
    Codice PHP:
    public function load($file)
            {
               
    // Get image mimetype
               
    $size getimagesize($file);
               
    $this->type $size['mime'];
               
    // Load image based on type
               
    switch ($this->type)
               {
                  case 
    'image/jpeg':
                  
    $this->gdresource imagecreatefromjpeg($file);
                  break;
                  case 
    'image/png':
                  
    $this->gdresource imagecreatefrompng($file);
                  break;
                  case 
    'image/gif':
                  
    $this->gdresource imagecreatefromgif($file);
                  break;
               }
               
    // Retain the alpha information
               
            
    imagesavealpha($this->gdresource,true);
            
           } 
    l'unica cosa che avviene ancora prima se ho ben capito la tua osservazione homezappa è la require_once del php che richiama la classe in questione ed ancora prima due righe in html per caricare il foglio di stile?!?

  6. #6
    homezappa era come dicevi tu. dopo svariati taglia dal codice il problema era in quello che c'era prima della chiamata alla funzione php.
    Ora però sono più confuso di prima perchè nn so come gestire i passaggi da source html a source php

  7. #7
    È molto semplice:
    Se, in php, devi eseguire la funzione header("qualchecosa");,
    DEVI essere sicuro di non avere inviato al browser nemmeno un byte!

    That's all, folks!

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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.