- This topic has 2개 답변, 2명 참여, and was last updated 11 years, 5 months 전에 by sujin park.
-
글쓴이글
-
-
제목 그대로, 아이디엘 윈도우에 체크 플레그를 만들고 이미지로 저장까지 하려는 목적으로 프로시저를 짜 보았는데요.
pro auto_cp,x
j=-1
img=bytarr(400,400)
repeat begin
j=j+1
img[0+(200/x)*j:((200/x)+(200/x)*j)-1,((200/x)+(200/x)*j)-1:((400/x)+(200/x)*j)-1]=255
img[(200/x)+(200/x)*j-1:(400/x)+(200/x)*j-1,0+(200/x)*j:(200/x)+(200/x)*j-1]=255
endrep until ((200*j/x)-1 eq 399)
write_jpeg,’test1.jpg’,img
end
이렇게 짜 보았는데, 배열상에 문제가 있는지, 대각선 방향으로만 체크플레그가 만들어 지고, 또 이후 어떤이유에선지 중지가 되어 write_jpeg 로 넘어가지 못하고 중지되어 버립니다. 그래서 이미지가 저장되지도 않구요.
어떤부분이 잘못된 것 일까요?.
ps.간단한 문제인것 같았는데, 오랫동안 씨름하다 수소문해 찾아와 질문 드립니다..
-
N=7
data=bytarr(N, N)
data[0:*:2]=1
print, data
data=data*255sz=N*60
img=rebin(data, sz, sz, /SAMPLE)
window, xsize=sz, ysize=sz
tv, img
end일단 위 예제는 N이 홀수일 경우에만 정상적으로 보입니다. 프로그램 구조를 일단 단순화하는 것이 좋으므로 짝수일 경우는 배제하였습니다.
위 예제에서 print로 출력되는 부분은 다음과 같습니다.
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1
0 1 0 1 0 1 0
1 0 1 0 1 0 1보이는 대로 일단 배열 자체를 체크 플래그로 만들고, 곱하기 255를 해서 흑색0과 백색255로 나누고 마지막으로 rebin을 통해 확대한 이미지로 변환하는 것이 이 예제의 흐름입니다.
처음 올려주신 예제가 repeat를 사용하기 위한 연습이라면 제가 잘못 답변을 드린 것인데요, 처음 올려주신 예제처럼 하시면 X와 Y가 함께 증가하게 되므로 대각선 방향만 원하시는 대로 생성될 수밖에 없을 것 같습니다.
아직 준비중인 사이트인데 첫 손님으로 오셨네요. 올리신 글이 어느날 없어지거나 할 수도 있는데요, 준비중이어서 그런 것이니 널리 양해 부탁드립니다. 일부러 지우거나 하는 그런 일은 없을 것입니다.
예상치 못했지만, 환영합니다.
-
답변 감사합니다.. 너무 초보적인 내용이라 계속 질문 드리는게 부끄럽습니다 만은. 이것은 제가 for 문으로 짜본 프로시저 입니다.
pro make_cf,k
img=bytarr(400,400)
for i=0,k,2 do begin
for j=0,k,2 do begin
print, i,j
img[i*(400/(k+1)):i*(400/(k+1))+((400/(k+1))-1),j*(400/(k+1)):j*(400/(k+1))+((400/(k+1))-1)]=255
endfor
endfor
for i=1,k,2 do begin
for j=1,k,2 do begin
print,i,j
img[i*(400/(k+1)):i*(400/(k+1))+((400/(k+1))-1),j*(400/(k+1)):j*(400/(k+1))+((400/(k+1))-1)]=255
endfor
endfor
write_jpeg,’checkflag.jpg’,img
end
중간에 print,i,j 는, i 에 따라 j 가 어떻게 나오는가 확인해보려고 함인데, 제 생각에는 repeat until 문의 논리와 같게 짰다고 생각 됐는데, 아니 었나 봅니다, 이 for 문과 같은 논리로 repeat until 문을 만들수는 없을까요?. 있다면 문자는 2개가 되어야 할까요?
궁금합니다.
ps. 생각도 못했었던 좋은 답변 받게되어 기분이 좋습니다. 감사합니다.
-
-
글쓴이글