Language/JavaScript (WEB)

๐Ÿ–ผ๏ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฏธ์ง€ ๊ฐ์ฒด ์‚ฌ์šฉ๋ฒ•

์ธํŒŒ_ 2022. 6. 12. 09:14

js-image

Image ๊ฐ์ฒด

๋ณดํ†ต ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃฐ์ผ์ด ์žˆ๋‹ค๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ <img> ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์†์„ฑ์„ ๋‹ค๋ฃฌ๋‹ค.

var x = document.createElement("IMG");

DOM ์—˜๋ฆฌ๋จผํŠธ api๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ๋Š” ํฐ ์ œ์•ฝ์‚ฌํ•ญ์ด ์—†๊ธด ํ•˜์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„  ๋”ฐ๋กœ image() ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ๊ธฐ๋„ ํ•˜๋Š”๋ฐ, ์ด๋ฏธ์ง€ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•ด ๋™์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃฐ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, html์— ์ด๋ฏธ์ง€ ํƒœ๊ทธ์˜ src ๋ถ€๋ถ„ ์ด๋ฏธ์ง€ url์„ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ œ์–ดํ•  ํ•„์š”์„ฑ์ด ์žˆ๊ฑฐ๋‚˜, ์›น๋ธŒ๋ผ์šฐ์ €์—๋Š” ๋‹น์žฅ ํ‘œ์‹œํ•˜์ง€์•Š๊ณ  ๋‚˜์ค‘์„ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋”ฉํ•˜๋ ค ํ• ๋•Œ๋‚˜ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”๋กœ ๊ตฌํ•  ๋•Œ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค.


Image ๊ฐ์ฒด ์‚ฌ์šฉ๋ฒ•

 

Image ๊ฐ์ฒด ์ƒ์„ฑ

// image๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์†์„ฑ๋“ค์„ ์ถ”๊ฐ€ํ• ์ˆ˜ ์žˆ์Œ
// new Image(width, height); ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„ฃ์–ด ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ง€์ • ๊ฐ€๋Šฅ
const img = new Image(); 
						
// createElement('img') ์ฒ˜๋Ÿผ dom์— <img> ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ• ์ˆ˜์žˆ๋‹ค.
document.body.appendChild(img);

 

์ด๋ฏธ์ง€ ๋กœ๋“œํ•ด์„œ ์›๋ณธ ํฌ๊ธฐ ์–ป๊ธฐ

const IMG = new Image();
IMG.src = '์ด๋ฏธ์ง€url';

// IMG.src ์— ์ด๋ฏธ์ง€ url์„ ๋„ฃ์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šดํ•˜๊ฒŒ ๋˜๊ณ  ๋กœ๋“œ๊ฐ€ ๋‹ค๋˜๋ฉด ์ด๋ฒคํŠธ ๋ฐœ์ƒ
IMG.addEventListener('load', function() {
    console.log('๋†’์ด : ', this.naturalHeight , '๋„ˆ๋น„ : ', this.naturalWidth, "์ด๋ฏธ์ง€ : ", this.src);	
});

 

Image ์†์„ฑ

  • border : ์ด๋ฏธ์ง€์˜ ํ…Œ๋‘๋ฆฌ ๊ฐ’
  • complete : ์ด๋ฏธ์ง€ ๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€(true/false)
  • height : ์ด๋ฏธ์ง€์˜ ๋†’์ด
  • width : ์ด๋ฏธ์ง€์˜ ๊ฐ€๋กœํฌ๊ธฐ
  • hspace : ์ด๋ฏธ์ง€์˜ ์ˆ˜ํ‰์—ฌ๋ฐฑ
  • vspace : ์ด๋ฏธ์ง€์˜ ์ˆ˜์ง์—ฌ๋ฐฑ
  • length : ์ด๋ฏธ์ง€์˜ ๊ฐฏ์ˆ˜
  • lowsrc : lowsrc ๋กœ ์„ค์ •ํ•œ ์ด๋ฏธ์ง€์˜ URL
  • name : ์ด๋ฏธ์ง€์˜ name
  • src : ์ด๋ฏธ์ง€์˜ URL

 

Image ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ

  • onAbort : ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์„ ์ค‘๊ฐ„์—์„œ ๋ฉˆ์ถœ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ
  • onError : ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์ค‘ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ
  • onLoad : ์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๋”ฉ๋˜์—ˆ์„๋•Œ
const IMG = new Image();
IMG.src = '์ด๋ฏธ์ง€url';

IMG.addEventListener('abort', () => {
	alert('์ด๋ฏธ์ง€๋ฅผ ์ฝ๋‹ค๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
})

IMG.addEventListener('error', () => {
	alert('์ด๋ฏธ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ๋กœ๋”ฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.')
})

IMG.addEventListener('load', () => {
	alert('์ด๋ฏธ์ง€๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋กœ๋”ฉ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
})

Image ๊ฐ์ฒด ์‚ฌ์šฉ ์˜ˆ์ œ

See the Pen Imgae ๊ฐ์ฒด by barzz12 (@inpaSkyrim) on CodePen.

 

 


# ์ฐธ๊ณ ์ž๋ฃŒ

http://www.ministory.net/xe/?mid=it_story&category=2963&page=9&document_srl=3024