블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

이미지 로딩은 오래걸린다.

이미지 로딩이 완료될때까지 기다릴 수 도 없다. (블럭된다. 멈춘다)

Sleep, Delay 같은 기능이 없거나, 안된다.

그래서, 이미지 로딩할때, onload, onerror 기능이 있다.

onload는 이미지가 로딩되면 호출되는 함수이다.


이미지 로딩되기전에는 이미지 사이즈를 알 수 없다.


이미지의 크기 정보가 필요한 경우, 이미지가 미리 로딩되도록

html body내에 사용할 이미지를 미리 넣어놓고, 자바스크립트는 body 마지막에 넣는 방법도 있으나,

이미지가 로딩될때, 보여질 수 도 있고, 자바 스크립트 위치가 맨아래여야하며,

html내에 이미지 정보가 들어가므로, 트래픽이 조금 증가할 수 있다.


그래서, 이미지를 사용하기전에 미리 로딩하는 방법을 자바스크립트만으로 구현해 보았다.

원리는 간단하다.

사용할 이미지를 자바스크립트로 미리 로딩하고,

모든 이미지가 로딩되면, main함수를 호출하는 방법이다.



//사용할 이미지 미리 로딩하기

pre_load_img_str_arry(["img/1.PNG","img/2.PNG","img/3.PNG"]);


//메인함수

function main()

{

pre_load_img_delete();

...


}







소스
---------------------------------------------------------------
//이미지 로딩시간이 오래걸려, 로딩이 완료될때까지 기다릴 수 없다.(Sleep, Wait등의 함수 기능 사용불가)
//여러장의 이미지를 미리 로딩하고, 로딩이 완료되면, main함수를 호출하도록 한다.
var pre_load_img_data={img:[],i:0,ok_cnt:0,err_cnt:0};
function pre_load_img_inc_cnt()
{
pre_load_img_data.ok_cnt++;
console.log("pre_load_img_data.ok_cnt=",pre_load_img_data.ok_cnt);
if(pre_load_img_data.ok_cnt==pre_load_img_data.i)
{
main();
}
}
function pre_load_img_onload()
{
console.log("pre_load_img_onload()");
console.log("this=",this);
console.log("this.src=",this.src);
pre_load_img_inc_cnt();
}
function pre_load_img_onerror()
{
console.log("pre_load_img_onerror()");
console.log("this=",this);
console.log("this.src=",this.src);
pre_load_img_data.err_cnt++;
console.log("pre_load_img_data.err_cnt=",pre_load_img_data.err_cnt);
pre_load_img_inc_cnt();
}
function pre_load_img_proc(imgurl)
{
console.log("pre_load_img_proc=",imgurl);
var a;
a=new Image();
a.onload=pre_load_img_onload;
a.onerror=pre_load_img_onerror;
pre_load_img_data.img[pre_load_img_data.i]=a;
pre_load_img_data.i++;
console.log("pre_load_img_data.i=",pre_load_img_data.i);
a.src=imgurl;
}
function pre_load_img_delete()
{
console.log("pre_load_img_delete");
while(pre_load_img_data.i--)
{
delete pre_load_img_data.img[pre_load_img_data.i];
}
}
function pre_load_img_str_arry(list)//list=["1.jpg",...]
{
var i,n;
n=list.length;
for(i=0;i<n;i++)
{
pre_load_img_proc(list[i]);
}
}


Posted by 안녕1999
, |

left, top은 style에 있고, 문자열 형식이라서, parseInt(()함수를 사용해야 숫자가 된다.


x=parseInt(mg.style.left);




width, height는 이미지의 속성이며, 숫자이다. (parseInt()함수가 필요없다.)


w=img.width,

h=img.height,




function get_left(o){

return parseInt(o.style.left.replace('px',''));

}

function get_top(o){

return parseInt(o.style.top.replace('px',''));

}




이미지 너비, 높이 구하기 실패하는 이유 : body(이미지)가 로딩이 끝나야, 값을 얻을 수 있다.

사용할 이미지를 body에 넣고, 밑에서 자바스크립트로 처리한다.


<body style="margin:0;padding:0">

<img id=img1 src="img/1.JPG" style="visibility:hidden;position:absolute;left:0;top:16;">

...

<script type='text/javascript'>

...

img1_w=img1.width,

img1_h=img1.height;

...

//실제로 사용할 내용을 생성한다.

document.write("<img id='img1"+i+"' src='img/1.JPG'>");//처음 로딩된 내용은 모두 지워진다.

...

</script>

</body>

Posted by 안녕1999
, |
첫번째 사진이 원본이고, 두번째 사진이 자동보정 적용한 사진입니다.
보정이 잘되네요.
물론 모든 사진이 자동보정 한다고, 좋아지는건 아닙니다.

Posted by 안녕1999
, |
인생을 즐기지 못한다....

Posted by 안녕1999
, |

버튼은 비트맵 기능을 지원하여, 쉽게 스킨을 입혔으나,

체크버튼은 그런 기능이 보이지 않는다.


아래의 편법으로 해결

비트맵버튼으로 체크버튼 이미지 ON=체크x언체크xPOPxPUSH 4장, OFF도 4장을 준비,

체크 상태 변수 1개 추가.

체크값에 따라, 비트맵 이미지를 다시 설정해주고, 강제로 다시 그리게 했다.

Posted by 안녕1999
, |

이미지, 동영상이 많은 우리나라에서는 별 효과없이, 느리기만 하다.

하지만, 데이터사용량이 돈과 직결되고, 택스트 위주의 웹서핑을 한다면, 써볼만하다.

예) 핸드폰으로 테더링할때


부가기능으로, 암호화기능이 됩니다.(압축되니깐)


https://chrome.google.com/webstore/detail/data-saver/pfmgfdlgomnbgkofeojodiodmgpgmkac/related?hl=ko&gl=KR



이와 더블어, 이미지 블록커도 같이 사용하면 좋습니다.

https://chrome.google.com/webstore/detail/block-image/pehaalcefcjfccdpbckoablngfkfgfgj/related?hl=ko&gl=KR





Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함