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

    il ridimensionamento rovina l'immagine

    Ciao forumisti,
    ho un problema con il ridimensionamento delle immagini per l'area di amministrazione di un sito di un'immobiliare (che ovviamente lamenta la cattiva definizione delle foto)

    Le foto che vengono inserite sono 800x600 px
    vengono ridimensionate a 764x571 e a 200x150 px con lo script classe_resize.php

    codice:
    <?
    class resize{	
    	var $urlimage = "";
    	var $maxX = 100;
    	var $maxY = 100;
    	var $fisso = 1;
    	var $latofisso = "XY";
    	var $folder = "public/";
    	var $newName = "";
    	
    	function controlladati(){
    		$this->errore = array();
    		$this->Estensione = "";
    		$this->originalX = 0;
    		$this->originalY = 0;
    		$this->originalName = "";
    		$this->newX = 0;
    		$this->newY = 0;
    		
    		if($this->urlimage==""){
    			array_push($this->errore,"Scegliere un file da ridimensionare");
    		}elseif(!file_exists($this->urlimage) || !is_file($this->urlimage)){
    			array_push($this->errore,"Il file selezionato non esiste");
    		}
    		if(!is_numeric($this->maxX) || !is_numeric($this->maxY) || $this->maxX<0 || $this->maxY<0){
    			array_push($this->errore,"L'altezza e la larghezza dell'immagine devono essere numerici");
    		}
    		if(!file_exists($this->folder) || !chmod($this->folder,0777)){
    			array_push($this->errore,"La cartella di destinazione non esiste o non è scrivibile");
    		}
    		if($this->fisso!=0 && $this->fisso!=1){
    			array_push($this->errore,"La variabile di dimensione fissa deve essere 0 o 1");
    		}
    		if($this->latofisso!="XY" && $this->latofisso!="X" && $this->latofisso!="Y"){
    			array_push($this->errore,"La variabile di lato fisso devono essere X o Y o XY");
    		}
    		if(count($this->errore)>0){
    			return false;
    		}else{
    			return true;
    		}
    	}
    	
    	function go(){
    		if($this->controlladati()){
    			$filename = basename($this->urlimage);
    			$this->originalName = $filename;
    			if($this->newName==""){$this->newName=$filename;}
    			$this->Estensione = strtolower(substr($filename, strrpos($filename, "."), strlen($filename)-strrpos($filename, ".")));
    			if($this->Estensione==".jpeg" || $this->Estensione==".jpg"){
    				$handle_immagine = imagecreatefromjpeg($this->urlimage);
    			}elseif($this->Estensione==".gif"){
    				$handle_immagine = imagecreatefromgif($this->urlimage);
    			}elseif($this->Estensione==".png"){
    				$handle_immagine = imagecreatefrompng($this->urlimage);
    			}else{
    				array_push($this->errore,"Formato immagine non valido");
    				return null;
    			}
    			$handle_immagine_adattata=$this->adatta($handle_immagine);
    			imagejpeg($handle_immagine_adattata, $this->folder.$this->newName, 80);
    			chmod($this->folder.$this->newName,0777);
    			unset($handle_immagine);
    			unset($handle_immagine_adattata);
    		}
    	}
    	
    	function adatta($handle_immagine){
    		$this->originalX=imagesx($handle_immagine);
    		$this->originalY=imagesy($handle_immagine);
    		if($this->fisso==1){
    			$this->newX=$this->maxX;
    			$this->newY=$this->maxY;
    		}else{
    			if($this->latofisso=="XY"){
    				if ($this->originalX/$this->originalY>$this->maxX/$this->maxY) {
    					$this->newX=$this->maxX;
    					$this->newY=($this->originalY/$this->originalX)*$this->maxX;
    				} else {
    					$this->newX=($this->originalX/$this->originalY)*$this->maxY;
    					$this->newY=$this->maxY;
    				}
    			}elseif($this->latofisso=="X"){
    				$this->newX=$this->maxX;
    				$this->newY=($this->originalY/$this->originalX)*$this->maxX;
    			}elseif($this->latofisso=="Y"){
    				$this->newX=($this->originalX/$this->originalY)*$this->maxY;
    				$this->newY=$this->maxY;
    			}else{
    				if ($this->originalX/$this->originalY>$this->maxX/$this->maxY) {
    					$this->newX=$this->maxX;
    					$this->newY=($this->originalY/$this->originalX)*$this->maxX;
    				} else {
    					$this->newX=($this->originalX/$this->originalY)*$this->maxY;
    					$this->newY=$this->maxY;
    				}
    			}
    		}
    		$tmp_immagine = imagecreatetruecolor($this->newX, $this->newY);
    		$handle_immagine_adattata = imagecopyresampled($tmp_immagine, $handle_immagine, 0, 0, 0, 0, $this->newX, $this->newY, $this->originalX, $this->originalY);
    		return $tmp_immagine;
    		
    	}
    
    }
    ?>
    Come posso evitare che si rovinino le foto nel ridimensionamento? Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Le librerie grafiche che usi (GD( fanno il loro lavoro, ma non è eccelso inoltre se non mantieni l proporzioni dell'immagine anche un programma come Photoshop le rovinerebbe

    p.s. 800/600 non ha la stessa proporzione di 764x571, premetto che non ho guardato il codice se esiste un conrollo sulla proporzione dell'immagine

  3. #3
    si, viene mantenuta la proporzione delle immagini... io in realtà specifico solo sul lato X massimo o il lato Y massimo (e il resto viene calcolato dallo script)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Codice PHP:
    imagejpeg($handle_immagine_adattata$this->folder.$this->newName80); 
    Prova a mettere a 100 il valore della qualità

    Codice PHP:
    imagejpeg($handle_immagine_adattata$this->folder.$this->newName100); 
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

  5. #5
    da esperienza personale (e da un sito immobiliare già fatto da me) il ridimensionamento dava problemi anche a me, ma solo con IE
    Cristian Giustini
    Web developer

    G&T Services (sito ripristinato)
    Per qualsiasi info/collaborazione contattatemi al seguente indirizzo:
    cristian.giustini@gtservices-online.com

  6. #6
    Grazie mille, ho portato a 100 la qualità delle immagini e dopo qualche test ho riscontrato anch'io che il problema persiste sono lo explorer (con firefox e con chrome le immagini mantengono una discreta qualità)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    613
    Ahhhhhh, questo grande virus chiamato Explorer!
    Conosci te stesso(?)
    (..e allora perchè scassi a me? )

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.