Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    trasparenze nella sovraposizione di immagini

    raga sto cercando di sovrapporre un immagine sul altra con il imagecopy soltanto che visualizza le trasparenze cosa che non voglio ecco il mio codice sapete come facci a rendere trasparenti le parti trasparenti del immagine che va sopra l'altra?
    Codice PHP:
    $background imagecreatefrompng("$abpath/$consol/$nomeimgz$imgtypex");
    $insert imagecreatefrompng("/membri2/nintendolife/img/logo.png");
    imagecolortransparent($insert,imagecolorexact($insert,255,0,255));
    $insert_x imagesx($insert);
    $insert_y imagesy($insert);
    imagecopy($background,$insert,0,0,0,0,$insert_x,$insert_y);
    imagepng($background,"$abpath/$consol/$nomeimgz$imgtypex"); 
    help

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    lascia stare imagecolortransparent... invece di imagecopy usa imagecopyresampled, io l'ho risolta così

  3. #3
    non mi funziona ... avete altri consigli? o soluzioni?

  4. #4
    raga come posso sostituire o come devo scivere questo imagecolortransparent
    mi serve questo codice .... HELP

  5. #5
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    senti ti assicuro che funziona... ti posto una classe che scrissi tempo fa e fa esattamente quello che chiedi più una serie di features per la creazione di thumbnail per le immagini.

    codice:
    <?
    /**
     * @author Fernando Marinò
     * Ridimensiona un'immagine e ne sceglie la destinazione
     * last build: 18-07-2003
     */
    class Thumbnail {
    	var $path;
    	var $GD;
    	var $error = false; // flag booleano
    	
    	/** $imageSize index:
    	 * [0] => width
    	 * [1] => height
    	 * [2] => type (constant)
    	 * [3] => size IMG tag
    	 */
    	var $imageSize;
    	
    	/**
    	 * formati ammessi in lettura:
    	 * IMG_JPG, IMG_PNG, IMG_GIF
    	 */
    	
    	function Thumbnail($path) {
    		$this->path = $path;
    		$this->imageSize = @getImageSize($path);
    		
    		if(!$this->imageSize) 				$this->_error("immagine non~trovata o~formato file~errato");
    		if($this->imageSize[2] > IMG_PNG)	$this->_error("formato~immagine non~supportato");
    	} // end CONSTRUCT
    	
    	function resize($maxsize, $percent = 100) {
    		if($this->error) return;
    		
    		// calcolo il lato dell'immagine
    		$widthSource = ($this->imageSize[0] * $percent) / 100;
    		$heightSource = ($this->imageSize[1] * $percent) / 100;
    		// calcolo offset
    		$offsetW = @(($this->imageSize[0] * (100 - $percent)) / 100);
    		$offsetH = @(($this->imageSize[1] * (100 - $percent)) / 100);
    		$offsetW /= 2;
    		$offsetH /= 2;
    		
    		// determina il lato maggiore
    		if($widthSource > $heightSource && !$fisso) {
    			$height = ($heightSource * $maxsize) / $widthSource; // applico la proporzione
    			$width 	= $maxsize;
    		} else {
    			$width 	= ($widthSource * $maxsize) / $heightSource; // applico la proporzione
    			$height = $maxsize;
    		}
    		// carico in memoria l'immagine originale
    		switch($this->imageSize[2]) {
    			case IMG_GIF:
    				$im = imageCreateFromGif($this->path);
    				break;
    			case IMG_JPG:
    				$im = imageCreateFromJpeg($this->path);
    				break;
    			case IMG_PNG:
    				$im = imageCreateFromPng($this->path);
    				break;
    		}
    
    		$this->GD = imagecreatetruecolor($width, $height);
    		imagefilledrectangle($this->GD, 0, 0, $width, $height, imagecolorallocate($im, 255, 255, 255));
    
    		imagecopyresampled($this->GD, $im, 0, 0, $offsetW, $offsetH, $width, $height, $widthSource, $heightSource);
    		imagedestroy($im);
    	}
    	
    	// private <==
    	function _error($msg) {
    		$this->error = true;
    		// allocazione immagine e colori fondamentali
    		$im = imagecreate(120, 120);
    		$white = imagecolorallocate($im, 255, 255, 255);
    		$red = imagecolorallocate($im, 255, 0, 0);
    		$black = imagecolorallocate($im, 0, 0, 0);	
    		
    		imagestring($im, 3, 10, 10, "-- Error --", $red);
    		
    		$token = explode('~', $msg);
    		$y = 25;
    		for($i = 0; $i < count($token); $i++) {
    			imagestring($im, 3, 12, $y, $token[$i], $black);
    			$y += 12;
    		}
    		
    		$this->GD = $im;
    	}
    	
    	function getGD() {
    		// ritorna un flusso GD per la thumbnail
    		return $this->GD;
    	}
    	
    	/**
    	 * parametri consentiti per $format:
    	 * IMG_JPG, IMG_PNG
    	 */ 
    	function saveAt($destination, $format = IMG_JPG) {
    		if(!isset($this->GD))
    			// carico in memoria l'immagine originale
    			switch($this->imageSize[2]) {
    				case IMG_GIF:
    					$this->GD = imageCreateFromGif($this->path);
    					break;
    				case IMG_JPG:
    					$this->GD = imageCreateFromJpeg($this->path);
    					break;
    				case IMG_PNG:
    					$this->GD = imageCreateFromPng($this->path);
    					break;
    			}
    	
    		
    		// salva la thumbnail in una cartella
    		switch($format) {
    			case IMG_JPG:
    				imagejpeg($this->GD, $destination);
    				break;
    			case IMG_PNG:
    				imagePng($this->GD, $destination);
    				break;
    		}
    	}
    	
    	function quadro($quadro, $percent = 100) {
    		if($this->error) return;
    		
    		$cornice = @imagecreatefromgif($quadro);
    		if(!$cornice) {
    			$this->_error("quadro non~trovata o~formato file~errato");
    			return;
    		}
    		
    		if(imagesx($cornice) > imagesy($cornice))
    			$this->resize(imagesx($cornice), $percent, imagesy($cornice));
    		else 
    			$this->resize(imagesy($cornice), $percent, imagesx($cornice));
    		
    		imagecopyresampled($this->GD, $cornice, 0, 0, 0, 0, imagesx($cornice), imagesy($cornice), imagesx($cornice), imagesy($cornice));
    	}
    	
    	function adattata() {
    		if($this->error) return;
    		
    		// carico in memoria l'immagine originale
    		switch($this->imageSize[2]) {
    			case IMG_GIF:
    				$im = imageCreateFromGif($this->path);
    				break;
    			case IMG_JPG:
    				$im = imageCreateFromJpeg($this->path);
    				break;
    			case IMG_PNG:
    				$im = imageCreateFromPng($this->path);
    				break;
    		}
    		
    		if(max($this->imageSize[0], $this->imageSize[1]) <= 600) {
    			$this->GD = $im;
    			return;
    		}
    		
    		$this->resize(600);
    	}	
    		
    	function addLogo($logo) {
    		// carico in memoria l'immagine originale
    		switch($this->imageSize[2]) {
    			case IMG_GIF:
    				$im = imageCreateFromGif($this->path);
    				break;
    			case IMG_JPG:
    				$im = imageCreateFromJpeg($this->path);
    				break;
    			case IMG_PNG:
    				$im = imageCreateFromPng($this->path);
    				break;
    		}
    		
    		// carico il logo
    		$logo = imagecreatefromgif($logo);
    		imagecopyresampled($im, $logo, imagesx($im) - 20 - imagesx($logo),
    									   imagesy($im) - 20 - imagesy($logo), 0, 0, imagesx($logo), 
    									   imagesy($logo), imagesx($logo), imagesy($logo));
    		
    		$this->GD = $im;
    	} // end addLogo
    } // end Thumbnail
    ?>
    il metodo in questione è l'ultimo, addLogo, ed è studiato appositamente per consentire immagini con trasparenze, a suo tempo ebbi lo stesso problema

    per utilizzarla:
    $obj = new Thumbnail("path/dell'immagine/di/sfondo.jpg");
    $obj->addLogo("path/del/logo.png-gif");
    per salvare l'immagine puoi usare il metodo saveAt o ritornare direttamente il reference dell'immagine e utilizzarlo come ti piace con getGD. Se non ti funziona dimmi che errore ti da, versione di php e librerie GD

  6. #6
    scusa io sto imparando il php da poco ... e non ho capito come devo
    tu mi hai aggiunto un codice lunghissimo nel quale non ho capito un accidenti
    non é che potresti modificarmi tu questo codice appena puoi? o qualcunaltro?
    Codice PHP:
    $background imagecreatefromjpeg("$abpath/$consol/$nomeimgz$imgtypex");
    $insert imagecreatefrompng("/membri2/nintendolife/img/logo.png");
    imagecolortransparent($insert,imagecolorexact($insert,255,0,255));
    $insert_x imagesx($insert);
    $insert_y imagesy($insert);
    imagecopy($background,$insert,0,0,0,0,$insert_x,$insert_y);
    imagejpeg($background,"$abpath/$consol/$nomeimgz$imgtypex",100); 

  7. #7
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Codice PHP:
    $background imagecreatefromjpeg("$abpath/$consol/$nomeimgz$imgtypex");
    $insert imagecreatefrompng("/membri2/nintendolife/img/logo.png");
    $insert_x imagesx($insert);
    $insert_y imagesy($insert);
    imagecopyresampled($background,$insert,0,0,0,0,$insert_x,$insert_y);
    imagejpeg($background,"$abpath/$consol/$nomeimgz$imgtypex",100); 

  8. #8
    scusa ma il codice che hai detto tu non funziona in quella mainera il codice non lo legge propio e non aggiunge l'immaggine
    io ho provato a modificarlo e ho visto che funziona cosi soltanto che agginge sempre il logo all'immagine ma mi inserisce i colori che io ho messo trasparenti io vorrei che quando inserisco l'immagine le zone trasparenti rimangano tali

    cmq questo é il codice che funziona uguale se al posto dell' imagecopytrasparent (o come si chiama) metto imagecopyresize
    Codice PHP:
    $background imagecreatefromjpeg("$abpath/$consol/$nomeimgz$imgtypex");
    $insert imagecreatefrompng("/membri2/nintendolife/img/logo.png");
    imagecopyresampled($insert,imagecolorexact($insert,255,0,255));
    $insert_x imagesx($insert);
    $insert_y imagesy($insert);
    imagecopy($background,$insert,0,0,0,0,$insert_x,$insert_y);
    imagejpeg($background,"$abpath/$consol/$nomeimgz$imgtypex",100); 
    quindi come devo fare mer avere le trasparenze

  9. #9
    cmq per capirci meglio io voglio rendere trasparente la parte di colere magenta del logo di quando uppo le immagini :master: non guardate questo caso che lo sfondo é bianco ma nel caso sia colorato http://www.nintendolife.altervista.o...es/NGC/134.jpg

  10. #10

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.