image edit pixels
verander de pixels van een gedeelte van een plaatje

home | index | menu | help

Er is geen CSS ondersteuning.

		

image-pixel-plaatje-1| image-pixel-plaatje-2| image-pixel-plaatje-3|

image-pixel-plaatje-4| image-pixel-plaatje-5| image-pixel-plaatje-6|

image-pixel-plaatje-7| image-pixel-plaatje-8| image-pixel-plaatje-9|

		
		

Als je niet van de image-partial-color pagina komt zal je dit wel een vreemde pagina vinden...
De image-edit-pixel pagina is gemaakt omdat de proceure van het voorgaande linkje slechts één plaatje kon modificeren. "getElementById" kan slechts voor één item (op een pagina) met dat id "gelden". Omdat er (nog) geen standaardfunctie voor een (get)class(byname) bestaat liepen enkele trouwe bezoekers "vast" op de procedure. Geen probleem. Op de dns5 staat ook een procedure die getElementsByClassName "maakt" (bij de javascript-sectie). Omdat de procedure "even" hiermee aanpassen wel een beetje lastig kan zijn, staat er op deze pagina een werkend voorbeeld. Voor alle details van de procedure verwijs ik naar de pagina die je met bovenstaande link kan bereiken. Hieronder het stukje html wat laat zien hoe de linkjes met de plaatjes geregeld moeten worden:

<p>
	<img height="240" width="160" src="edit-pixel-1.jpg" alt="image-pixel-plaatje-1" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-2.jpg" alt="image-pixel-plaatje-2" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-3.jpg" alt="image-pixel-plaatje-3" class="edit-image-pixels" />|
</p>    
<p>
	<img height="240" width="160" src="edit-pixel-4.jpg" alt="image-pixel-plaatje-4" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-5.jpg" alt="image-pixel-plaatje-5" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-6.jpg" alt="image-pixel-plaatje-6" class="edit-image-pixels" />|
</p>    
<p>
	<img height="240" width="160" src="edit-pixel-7.jpg" alt="image-pixel-plaatje-7" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-8.jpg" alt="image-pixel-plaatje-8" class="edit-image-pixels" />|
	<img height="240" width="160" src="edit-pixel-9.jpg" alt="image-pixel-plaatje-9" class="edit-image-pixels" />|
</p>    
		

En hieronder het javascriptje wat volkomen valideert volgens JSLint:

<script>
	var i;
	function getElementsByClass(knoopje,doedezeclass,tag){
		var j,klaselementen=[];
		var elementjes=knoopje.getElementsByTagName(tag);
		var elementjeslengte=elementjes.length;
		var hetpatroon=new RegExp(doedezeclass);
		for (i=0,j=0;i<elementjeslengte;i++){
			if (hetpatroon.test(elementjes[i].className)){
				klaselementen[j]=elementjes[i];
			j++;}}
	return klaselementen;}
	var elvars = getElementsByClass(document,'edit-image-pixels','*');
	var willekeurig_plaatje=elvars[0];
	function maakvoorIEplaatjegrijs(willekeurig_plaatje){
		willekeurig_plaatje.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(grayScale=1)';}
	function regeldepixels(willekeurig_plaatje){
		var kanvas = document.createElement('canvas');
		var canvasinhoud = kanvas.getContext('2d');
		var breedtevanplaatje = willekeurig_plaatje.width;
		var de_hoogtevanplaatje = willekeurig_plaatje.height;
		kanvas.width = breedtevanplaatje;
		kanvas.height = de_hoogtevanplaatje;
		canvasinhoud.drawImage(willekeurig_plaatje, 0, 0);
		var pixels_plaatje = canvasinhoud.getImageData(0, 0, breedtevanplaatje, de_hoogtevanplaatje);
		var de_hoogte=pixels_plaatje.height;
		var nieuwe_de_hoogte=de_hoogte-(de_hoogte-20);
		var begin_de_hoogte=((de_hoogte-nieuwe_de_hoogte)/8);
		var eind_de_hoogte=de_hoogte-begin_de_hoogte;
		for(var y = begin_de_hoogte; y < eind_de_hoogte; y++){
			for(var x = 50; x < (pixels_plaatje.width-50); x++){
				var i = (y * 4) * pixels_plaatje.width + x * 4;
				var gemiddelde = (pixels_plaatje.data[i] + pixels_plaatje.data[i + 1] + pixels_plaatje.data[i + 2]) / 3;
				pixels_plaatje.data[i] = gemiddelde; 
				pixels_plaatje.data[i + 1] = gemiddelde; 
				pixels_plaatje.data[i + 2] = gemiddelde;}}
		canvasinhoud.putImageData(pixels_plaatje, 0, 0, 0, 0, pixels_plaatje.width, pixels_plaatje.height);
		return kanvas.toDataURL();}
	function start(){
		var delengte= elvars.length;
	for(i=0;i<delengte;i++){
		willekeurig_plaatje=elvars[i];
		if (navigator.userAgent.indexOf("MSIE") != -1) {
			maakvoorIEplaatjegrijs(willekeurig_plaatje);
		} else {
			willekeurig_plaatje.src = regeldepixels(willekeurig_plaatje);}}}
	setTimeout(function(){start();},1100);
</script>
		

De image edit pixel procedure valideert (ook) op de css en de html. Kijk trouwens even naar hoe de 2 grijze vakjes op de plaatjes gemaakt zijn. In de fuctie regeldepixels() kan je exact bepalen welk gedeelte (of gedeelten) van de image je wilt bewerken. En dat kan met een nauwkeurigheid van één pixel.

cache 31-01-2011