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]<|| $dimension[2]>3ShowMessage($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;
    }