Originariamente inviato da marketto 
posta il codice.
			
		
 
	 
 
questo è il codice con cui richiamo la classe:
	Codice PHP:
	
$immagine_obj = new ManipulateImages($root_dir.'images');
$immagine_obj->final_width = 99;
$immagine_obj->final_height = 99;
$immagine = $immagine_obj->ResizeAndConvertToBinary($_FILES['immagine']); 
 
questa è la funzione che converte in binario:
	Codice PHP:
	
function ConvertToBinary($file_to_convert) {
    $file_handle = fopen($file_to_convert, "rb");
    $size = filesize($file_to_convert);
    $file_readed = fread($file_handle, $size);
    $binary_file = addslashes($file_readed);
    return $binary_file;
} 
 
e questa è la classe che eventualmente ridimensiona l'immagine
	Codice PHP:
	
class ManipulateImages {
    // INIZIO PARAMETRI DI CONFIGURAZIONE
    // variabili della classe
    var $final_width = 0;                    // dimensione orizzontale finale delle immagini in pixel
    var $final_height = 0;                    // dimensione verticale finale delle immagini in pixel
    var $final_path_and_name = '';            // path e nome del file su cui deve essere salvata l'immagine
    var $max_size_image = '1048576';        // dimensioni massime in byte dell'immagine originale
    var $image_quality = 75;                // qualità, da 0 a 100
    // messaggi all'utente
    var $msg_error_too_big = "Le immagini devono essere di dimensioni inferiori ad 1 Mb.";
    var $msg_error_bad_format = "Le immagini possono essere solo nei formati JPG, GIF o PNG.";
    // FINE PARAMETRI DI CONFIGURAZIONE
    var $img_dir = '';                // percorso assoluto alla directory delle immagini, per le chiamate a
            // ShowMessage con l'utilizzo delle immagini
    //CODICE
    // il costruttore della classe imposta la directory delle immagini
    function ManipulateImages($img_dir) {
        $this->img_dir = $img_dir;
    }
    // ResizeImage si occupa di ridimensionare l'immagine alle dimensioni specificate come parametri della classe, nello
    // specifico:
    // 1. controllo che l'immagine sia di dimensioni inferiori al valore settato, se accade riporto l'errore
    // 2. ricava le dimensioni dell'immagine originale
    // 3. controllo che l'immagine sia in uno dei formati JPG, GIF o PNG, altrimenti riporto l'errore
    // 4. se l'immagine è più grande delle dimensioni di destinazione, calcolo le nuove dimensioni
    //         proporzionalmente, altrimenti lascio l'immagine così com'è
    // 5. crea una nuova immagine
    // 6. crea una nuova immagine dalla jpeg originaria utilizzando la funzione appropriata in base al
    //    formato dell'immagine sorgente
    // 7. incolla restringendo la jpeg originaria sulla nuova immagine
    // 8. Distruggo l'handle dell'immagine originale per liberare la memoria
    // 9. restituisce l'immagine con qualita di compressione pari a XX distruggendo poi l'handle
    function ResizeImage($pf_image) {
        // 1. controllo che l'immagine sia di dimensioni inferiori al valore settato, se accade riporto l'errore
        if ($pf_image['size']>$this->max_size_image) {
            ShowMessage($this->msg_error_too_big, 'back page', 'a', $this->img_dir);
        }
        // 2. ricava le dimensioni dell'immagine originale
        $dimension = GetImageSize($pf_image['tmp_name']);
        // echo $pf_image['type'].' '.$pf_image['size'].' '.$dimension[0].'X'.$dimension[1];
        // 3. controllo che l'immagine sia in uno dei formati JPG, GIF o PNG, altrimenti riporto l'errore
        if ($dimension[2]<1 || $dimension[2]>3) ShowMessage($this->msg_error_bad_format, 'back page', 'a', $this->img_dir);
        // 4. se l'immagine è più grande delle dimensioni di destinazione, calcolo le nuove dimensioni proporzionalmente, altrimenti lascio l'immagine così com'è
        $new_width = $dimension[0];
        $new_height = $dimension[1];
        if (($dimension[0]>$this->final_width) || ($dimension[1]>$this->final_height)) {
            if (($dimension[0]/$this->final_width)>($dimension[1]/$this->final_height)) {
                $new_width = $this->final_width;
                $new_height = $dimension[1]/($dimension[0]/$this->final_width);
            } else {
                $new_height = $this->final_height;
                $new_width = $dimension[0]/($dimension[1]/$this->final_height);
            }
        }
        // 5. crea una nuova immagine
        $new_img_pf = ImageCreateTrueColor($new_width,$new_height);
        // 6. crea una nuova immagine dalla jpeg originaria utilizzando la funzione appropriata in base al
        //    formato dell'immagine sorgente
        switch ($dimension[2]) {
            case 1:
                $old_image_pf = ImageCreatefromGIF($pf_image['tmp_name']);
                break;
            case 2:
                $old_image_pf = ImageCreatefromJPEG($pf_image['tmp_name']);
                break;
            case 3:
                $old_image_pf = ImageCreatefromPNG($pf_image['tmp_name']);
                break;
        }
        // 7. incolla restringendo la jpeg originaria sulla nuova immagine
        imagecopyresampled ($new_img_pf, $old_image_pf,0,0,0,0,$new_width,$new_height,$dimension[0],$dimension[1]);
        // 8. Distruggo l'handle dell'immagine originale per liberare la memoria
        imagedestroy($old_image_pf);
        // 9. restituisce l'immagine con qualita di compressione pari a XX distruggendo poi l'handle
        $path = $this->final_path_and_name=='' ? $pf_image['tmp_name'] : $this->final_path_and_name;
        ImageJPEG($new_img_pf,$path, $this->image_quality);
        imagedestroy($new_img_pf);
        $results['pf_image'] = $path;
        $image_dimensions = getimagesize($path);
        $results['width'] = $image_dimensions[0];
        $results['height'] = $image_dimensions[1];
        $results['image_type'] = $image_dimensions[2];
        $results['width_height'] = $image_dimensions[3];
        $results['file_type'] = $pf_image['type'];
        return $results;
    }
    function ResizeAndConvertToBinary($pf_image) {
        $pf_image = $this->ResizeImage($pf_image);
        $pf_image['pf_image'] = ConvertToBinary($pf_image['pf_image']);
        $pf_image['size'] = strlen($pf_image['pf_image']);
        return $pf_image;
    }
}