HTML5/Image Object

HTML5 Image Object Demo

Soul-Learner 2015. 3. 7. 19:33

HTML5 Image Object example


HTML5의 Image Object 를 사용하는 다양한 예

<!DOCTYPE HTML>
<html>
<head>
<title>
	Image Object Demo
</title>
<script type="application/javascript">
/* Image 오브젝트는 <img> 태그를 표현한 자바스크립트 오브젝트이다
 * 자바스크립트에서 Image 오브젝트, <img> 태그, <canvas> 태그를 이용한 다양한 이미지 출력방법을 테스트해본다
*/
 
// 이미지 파일을 로드하여 Image오브젝트를 생성하고 캔바스 등에 그린다
function loadImage() {
	var imageObj = new Image();
	imageObj.onload = function(evt) {
		drawCanvas(this);
		//canvasToImg(this);
		//dynamicCanvas(this);
		//dynamicCanvasToImg(this);
	};
	imageObj.src = 'smile.png';
}

// Image오브제트를 캔바스에 그린다
function drawCanvas(imageObj) {
	var canvas = document.getElementById('canvas1');
	var context = canvas.getContext('2d');
	context.drawImage(imageObj, 0,0);
}

// canvas에 그려진 이미지를 <img>태그에 그린다
function canvasToImg(imageObj) {
	var canvas = document.getElementById('canvas1');
	var context = canvas.getContext('2d');
	context.drawImage(imageObj,0,0);
	var dataURL = canvas.toDataURL();
	//console.log('dataURL:'+dataURL);
	var img = document.getElementById('img1');
	img.src = dataURL;
}

// 동적으로 생성된 canvas에 이미지를 그리고 화면에 출력한다
function dynamicCanvas(imageObj) {
	var canvas = document.createElement('canvas');
	canvas.width = 300;
	canvas.height = 300;
	var context = canvas.getContext('2d');
	context.drawImage(imageObj,0,0);
	document.body.appendChild(canvas);
}

// 동적인 캔바스에 이미지를 그리고 이미지 태그에도 그린다
function dynamicCanvasToImg(imageObj) {
	var canvas = document.createElement('canvas');
	canvas.width = 300;
	canvas.height = 300;
	var context = canvas.getContext('2d');
	context.drawImage(imageObj,0,0);
	var dataURL = canvas.toDataURL();
	var img = document.getElementById('img1');
	img.src = dataURL;
}

// 이미지 태그에 이미지를 그린다
function imgTagDisplay() {
	var imageObj = document.getElementById('img1');
	imageObj.onload = function(evt){
		//
	}
	imageObj.src = 'smile.png';
}

// 동적인 이미지 태그에 이미지를 그리고 화면에 출력한다
function dynaImgTag() {
	var imgTag = document.createElement('img');
	var imageObj = new Image();
	imageObj.onload = function(evt){
		imgTag.src = this.src;
		document.body.appendChild(imgTag);
	}
	imageObj.src = 'smile.png';
}

// 이미지 태그에 그려진 이미지를 캔바스에도 그린다
function imgTagToCanvas() {
	var imgTag = document.createElement('img');
	var imageObj = new Image();
	imageObj.onload = function(evt){
		imgTag.src = this.src;
		var canvas = document.getElementById('canvas1');
		var context = canvas.getContext('2d');
		context.drawImage(imgTag,0,0);
	}
	imageObj.src = 'smile.png';
}

// 캔바스에 그려진 이미지 데이터를 편집하여 다시 출력한다
function canvasGetImageData() {
	var imageObj = new Image();
	imageObj.onload = function(evt) {
		var canvas = document.getElementById('canvas1');
		var context = canvas.getContext('2d');
		context.drawImage(imageObj,0,0);
		
		//이미지 데이터 편집
		var imageData = context.getImageData(0,0,imageObj.width, imageObj.height);
		var data = imageData.data;
		//alert('Size:'+data.length);
		//var imgLen = imageObj.width * imageObj.height;
		for(var y=0; y<imageObj.height; y++) {
			for(var x=0; x<imageObj.width; x++){
				/* 
				var red = data[y*imageObj.width*4+(x*4)+0];
				var green = data[y*imageObj.width*4+(x*4)+1];
				var blue = data[y*imageObj.width*4+(x*4)+2];
				var alpha = data[y*imageObj.width*4+(x*4)+3]; 
				*/
				// 이미지의 절반은 투명하게 처리한다
				if(y>imageObj.height/2)
					data[y*imageObj.width*4+(x*4)+3] = 0;
			}
		}
		alert('이미지의 절반을 투명하게 설정합니다');
		context.putImageData(imageData,0,0);
	};
	imageObj.src = 'smile.png';
}

// 파일박스에 선택된 이미지 파일을 로드하여 이미지 태그에 그린다
function previewImage(files) {
	var img = document.createElement("img");
	//FileReader를 이용한 이미지 파일로드
	var fileReader = new FileReader();
	fileReader.onload = function(evt){
		img.src = evt.target.result; //혹은 아래 라인처럼...
		//img.src = window.URL.createObjectURL(files[0]);
		document.body.appendChild(img);
	}
	fileReader.readAsDataURL(files[0]);
}

// WebSocket 을 통해서 이미지파일을 수신할 때 Blob 형으로 수신된 경우 미리보기
// window.URL.createObjectURL(param); // param은 File오브젝트나 Blob 오브젝트
function blobPreviewImage(blob) {
	var img = document.createElement("img");
	img.src = window.URL.createObjectURL(blob);
	document.body.appendChild(img);
}

</script>
</head>
<body>
<input type="button" value="확 인" onclick="canvasGetImageData();"><br>
<img id='img1'><br>
<canvas id="canvas1" width="600" height="400"> </canvas><br>
<input type="file" multiple onchange="previewImage(this.files);">
</body>
</html>