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

    aiuto pulsanti con fade e grayscale

    Ciao a tutti,
    avrei bisogno di un aiutino, ho questo script per creare dei pulsanti che in automatico mi creano un effetto fade trasformando l'imagine del pulsante in imamgine bianco e nero. Il mio problema è che funziona perfettamente su firefox, ma su altri browser nn mi funziona il bianco e nero, mentre il fade si.


    codice:
    // Fade in images so there isn't a color "pop" document load and then on window load
    		$j(".menu_fade img").fadeIn(50);
    
    
    
    // clone image
    		$j('.menu_fade img').each(function(){
    			var el = $j(this);
    			el.css({"position":"absolute"}).wrap("<div class='img_wrapper' style='display: inline-block'>").clone().addClass('img_grayscale').css({"position":"absolute","z-index":"998","opacity":"0"}).insertBefore(el).queue(function(){
    				var el = $j(this);
    				el.parent().css({"width":this.width,"height":this.height});
    				el.dequeue();
    			});
    			this.src = grayscale(this.src);
    		});
    
    // Fade image 
    		$j('.menu_fade img').mouseover(function(){
    			$j(this).parent().find('img:first').stop().animate({opacity:1}, 200);
    		})
    		$j('.img_grayscale').mouseout(function(){
    			$j(this).stop().animate({opacity:0}, 800);
    		});	
    
    // Grayscale w canvas method
    	function grayscale(src){
    		var canvas = document.createElement('canvas');
    		var ctx = canvas.getContext('2d');
    		var imgObj = new Image();
    		imgObj.src = src;
    		canvas.width = imgObj.width;
    		canvas.height = imgObj.height; 
    		ctx.drawImage(imgObj, 0, 0); 
    		var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
    		for(var y = 0; y < imgPixels.height; y++){
    			for(var x = 0; x < imgPixels.width; x++){
    				var i = (y * 4) * imgPixels.width + x * 4;
    				var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
    				imgPixels.data[i] = avg; 
    				imgPixels.data[i + 1] = avg; 
    				imgPixels.data[i + 2] = avg;
    			}
    		}
    		ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
    		return canvas.toDataURL();
        }
    qualcuno riesce a darmi una mano? grazie

  2. #2
    In pratica in safari e chrome non mi crea l'immagine in grigio, e in chrome mi blocca lo script che c'è dopo...
    il problmea credo che sia in // clone image, o nella funzione he crea l'immagine in grigio?
    però è strano perché se lo posiziono da un'altra parte quando clicco sul pulsante su chrome mi crea l'immagine grigia però sfalzandola...

  3. #3
    mmm...io ancora ci sto sbattendo la testa...lo so che è estate e che si va tutti al mare...ma un aiutino da casa???

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    una prova al volo, se non passi per un webserver comunque non funzionera'
    con safari non funziona (almeno, sono su windows), ma fa quello che deve con firefox/chrome
    codice:
    	function grayscale(el){		
    		var imgObj = new Image();
    		imgObj.onload=function(){
    			var canvas = document.createElement('canvas');
    			var ctx = canvas.getContext('2d');
    			canvas.width = this.width;
    			canvas.height = this.height; 
    			ctx.drawImage(this, 0, 0); 
    			var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
    			for(var y = 0; y < imgPixels.height; y++){
    				for(var x = 0; x < imgPixels.width; x++){
    					var i = (y * 4) * imgPixels.width + x * 4;
    					var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
    					imgPixels.data[i] = avg; 
    					imgPixels.data[i + 1] = avg; 
    					imgPixels.data[i + 2] = avg;
    				}
    			}
    			ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
    			el.src=canvas.toDataURL();
    		}
    		imgObj.src = el.src;
    	}
    	$(function(){
    		$('.myImgs').each(function(){
    			grayscale(this);
    		})
    	})
    [img]blablabla.gif[/img]
    [img]blablabla.jpg[/img]

    ciao

  5. #5
    yeh yeh yeh...ora mi funziona!!!
    se dovesse servire a qlc1 questo è lo script...però devo dire che si trova facilmente in giro...
    grazie Xinod

    codice:
    <script type="text/javascript"> 	 	// On window load. This waits until images have loaded which is essential  var $j = jQuery.noConflict();  	  $j(document).ready(function(){	   	$j(window).load(function(){ 		 		// Fade in images so there isn't a color "pop" document load and then on window load 		$j(".item img").fadeIn(500); 		 		// clone image 		$j('.item img').each(function(){ 			var el = $j(this); 			el.css({"position":"absolute"}).wrap("<div class='img_wrapper' style='display: inline-block'>").clone().addClass('img_grayscale').css({"position":"absolute","z-index":"998","opacity":"0"}).insertBefore(el).queue(function(){ 				var el = $j(this); 				el.parent().css({"width":this.width,"height":this.height}); 				el.dequeue(); 			}); 			this.src = grayscale(this.src); 		}); 		 		// Fade image  		$j('.item img').mouseover(function(){ 			$j(this).parent().find('img:first').stop().animate({opacity:1}, 1000); 		}) 		$j('.img_grayscale').mouseout(function(){ 			$j(this).stop().animate({opacity:0}, 1000); 		});		 	}); 	 	// Grayscale w canvas method 	function grayscale(src){ 		var canvas = document.createElement('canvas'); 		var ctx = canvas.getContext('2d'); 		var imgObj = new Image(); 		imgObj.src = src; 		canvas.width = imgObj.width; 		canvas.height = imgObj.height;  		ctx.drawImage(imgObj, 0, 0);  		var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height); 		for(var y = 0; y < imgPixels.height; y++){ 			for(var x = 0; x < imgPixels.width; x++){ 				var i = (y * 4) * imgPixels.width + x * 4; 				var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3; 				imgPixels.data[i] = avg;  				imgPixels.data[i + 1] = avg;  				imgPixels.data[i + 2] = avg; 			} 		} 		ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height); 		return canvas.toDataURL();     } 	    });  </script>

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.