Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Come si richiama il metodo display di un immagine?

    Ciao a tutti.
    Ho appena iniziato lo studio della programmazione ad oggetti e ho provato a mettere in pratica questo esempio di classe per visualizzare immagini
    <?php

    //creo una classe che legge un file di immagine e lo visualizza

    class Image {

    //definisco gli attributi

    private $image;
    private $width;
    private $height;
    private $mimetype;

    //creo il constructor della classe
    function __construct($filename){


    //apro il file d'immagine e lo leggo come file binario
    $fp = fopen($filename, 'rb') or die("L'immagine '$filename' non è stata trovata!");
    $buf = '';

    //finché il pointer non arriva alla fine del file...
    while(!feof($fp)) {

    //...carico il file nel buffer
    $buf .= fgets($fp, 4096);
    }

    //poi creo l'immagine dalla stringa ottenuta sopra e la assegno all'attributo image

    $this->image = imagecreatefromstring($buf);

    //estraggo le info dall'immagine
    $info = getimagesize($filename);
    $this->width = $info[0];
    $this->height = $info[1];
    $this->mimetype = $info['mime'];

    }

    public function display() {
    header("Content-type: {$this->mimetype}");
    switch($this->mimetype) {
    case 'image/jpeg': imagejpeg($this->image); break;
    case 'image/png': imagepng($this->image); break;
    case 'image/gif': imagegif($this->image); break;
    }
    //exit;
    }

    }


    //richiamo l'oggetto Image
    $image = new Image($_GET['image']);



    ?>

    Quello che non capisco è come riuscire alla fine a visualizzare la mia immagine sul browser. Non capisco perché questo esempio usa il metodo GET visto che non ho alcun form...
    E se scrivo:
    $image = new Image("mia_immagine.jpg");

    non si vede nulla...

    Quindi come si usa questa classe?

    Scusate la banalità della domanda, ma non ho mai usato classi prima d'ora...

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Beh dovresti richiamare il metodo display()
    $image->display();

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    Grazie per la risposta.
    Ho provato a richiamare l'oggetto così:

    $image = new Image("image.jpg");
    $image->display();

    Ma mi restituisce solo il percorso del mio file php in locale:
    http://localhost/mia_cartella/classe.php

    Forse non mi è chiaro cosa dovrebbe fare esattamente questa classe e cosa dovrebbe stampare a video...


  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    http://it2.php.net/imagejpeg
    così dovrebbe esserti più chiaro credo

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  5. #5
    Ho provato a visualizzare la pagina sul mio spazio web, perché su locale mi dava solo il percorso del file (forse devo abilitare qualche funzione dal php.ini?) e questo è il risultato:

    Array ( [0] => 500 [1] => 400 [2] => 2 [3] => width="500" height="400" [bits] => 8 [channels] => 3 [mime] => image/jpeg ) �����JFIF���������>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ���C�    $.' ",#(7),01444'9=82<.342���C  2! ecc ecc....

    L'array iniziale ho scelto io di visualizzarlo per controllare se vedeva l'immagine.
    Praticamente mi stampa a video la stringa corrispondente all'immagine, ma non l'immagine stessa mentre la funzione imagejpeg() dovrebbe proprio fare l'output dell'immagine, che nel mio caso si chiama image.jpg e si trova nella stessa cartella di questo file php...

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.