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

    ridimensionare immagini da database

    Ciao a tutti,
    come fare a creare una thumbs di una immagine da database?

    Ho una tabella che contiene immagini.
    Nessun problema a visualizzare le immagini così come sono ma vorrei ridimensionarle.

    Cioè non vorrei fare una banale riduzione tipo <img src=...... width=100 height=100> ma ricreare l'immagine tremite script.

    Per le immagini che 'fisicamente' sono sul server uso questo:
    Header("Content-type: image/jpeg");
    $i = $_GET["i"];
    $origine= "../media/foto/gallery/" . $i;
    $size = GetImageSize ("$origine");
    $thumb = imagecreatetruecolor(100,100);
    $image =ImageCreatefromJPEG("$origine");
    imagecopyresized ($thumb,$image,0,0,0,0,101,101,$size[0],$size[1]);
    ImageJPEG($thumb,'',80);

    Teniamo anche presente che le immagini nel db possono anche essere gif.

    Grazie in anticipo come sempre.

  2. #2
    per recuoerare le immagini dal db uso questo script:

    $id = htmlspecialchars($_GET["id"]);
    $query = "SELECT foto AS data, tipofoto AS tipo FROM album WHERE id='$id'";
    $select = mysql_query($query) or die("Impossibile proseguire - provare più tardi o contattare l'amministratore di sistema");
    $result = mysql_fetch_array($select);
    mysql_close();
    $data = $result[data];
    $type = $result[tipo];
    Header("Content-type: $type");
    echo $data;

    Questo script è contenuto in una pagina (vedi.php) chiamata dalla pagina dove devo visualizzare l'immagine (foto.php)
    Dentro foto.php c'è il tag <img src=vedi.php?id=$id border=0>

    Però non trovo un modo per ridimensionare al volo l'immagine.
    Se l'immagine fosse 'fisicamente' residente sul server non c'è problema a ridimensionarla usando lo script del mio primo post, ma prelevandola dal db non ne vengo fuori.

    qualche idea?

    Grazie.

  3. #3
    non ne vengo fuori....

    Forse è meglio aggiungere una miniatura in fase di upload...

    Però mi sembra impossibile che non si possa ridimensionare al volo un immagine dal database, almeno io non trovo la soluzione.

    Ciao

  4. #4
    up

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Se l'unico modo è avere il file su disco, appoggialo su una directory temporanea dopo averlo letto dal db...

  6. #6
    stavo pensando che se passassi le informazioni di altezza e larghezza della foto durante la fase di upload in un apposito campo della tabella forse, ma dico forse, potrei ottenere qualche risultato.
    Proverò questa idea e faro sapere.

    Ciao e grazie.

  7. #7

    soluzione trovata

    Ciao,
    posto la soluzione che ho trovato e che ho testato, magari a qualcuno potrà servire.

    Nella tabella del DB ho i campi foto (blob) e tipo (varchar)


    nella pagina dove devo visualizzare l'immagine chiamo <img src=vedifoto.php?id=$id border=0>
    dentro vedifoto.php c'è:

    la chiamata è... SELECT foto AS data, tipo AS type.....
    $riga= mysql_fetch_array($select);
    $data = $riga[data];
    $type = $riga[tipo];
    Header("Content-type: $type");
    $size = 100; // new image width
    $src = imagecreatefromstring($data);
    $width = imagesx($src);
    $height = imagesy($src);
    $aspect_ratio = $height/$width;
    if ($width <= $size) {
    $new_w = $width;
    $new_h = $height;
    } else {
    $new_w = $size;
    $new_h = abs($new_w * $aspect_ratio);
    }
    $img = imagecreatetruecolor($new_w,$new_h);
    imagecopyresized($img,$src,0,0,0,0,$new_w,$new_h,$ width,$height);
    // determine image type and send it to the client
    if ($type == "image/pjpeg") {
    imagejpeg($img);
    } else if ($type == "image/x-png") {
    imagepng($img);
    } else if ($type == "image/gif") {
    imagegif($img);
    } else if ($type == "image/jpeg") {
    imagejpeg($img);
    }
    imagedestroy($img);

    Ciao a tutti.



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.