레이블이 이미지인 게시물을 표시합니다. 모든 게시물 표시
레이블이 이미지인 게시물을 표시합니다. 모든 게시물 표시

2009년 11월 7일 토요일

Visual C++에서 윈도우 내장 이미지 뷰어 사용하는 방법

메르카토르 지도에 최단경로를 그리는 프로그램을 개발 중 이미지 파일(PNG)을 화면에 간단히 출력하는 기능을 넣기로 했다.

처음엔 그냥 ShellExecute() 함수에서 이미지 파일을 직접 실행시켰는데, PC마다 일관성이 없어 보기 좋지 않았다.
그래서 윈도우 XP에 내장된 이미지 뷰어를 이용해서 이미지 파일을 출력하기로 방향을 수정.

Visual C++에서 이런 식으로 윈도우에 내장된 이미지 뷰어를 사용하려면 아래와 같은 짤막한 코드면 충분하다.


csPNG에 이미지 파일의 full path가 들어있다고 가정함.

CString csParam;
csParam.Format(_T("shimgvw.dll, ImageView_Fullscreen %s"), csPNG);
ShellExecute(NULL, _T("open"), _T("rundll32.exe"), csParam, NULL, SW_SHOW);


2008년 2월 26일 화요일

정말 빠른 이미지 뷰어 : 꿀뷰 3

사용자 삽입 이미지

모델분들을 보지 마시고, 아래쪽 버튼을 봐주세요 ^^;;;



사용자에게 사랑받는 프로그램의 요건중 중요한 요소 2가지는 안정성속도입니다.

안정성이야 더 말할 나위가 없는 요건이니, 사용자에게 체감적으로 다가오는 요소는 속도일 것입니다.
(어짜피 안정성이 떨어지면 자동 퇴출입니다)

이미지 뷰어는 그 중에서도 속도가 더욱 중요한 프로그램입니다.
느려터진 윈도우 내장 뷰어나 웹 브라우저에서 그냥 보는 사용자도 있기는 하지만, 대다수의 사용자들은 이미지뷰어를 따로 설치합니다.
그리고, 더 빠른 뷰어를 선호합니다.

널리 사용되는 뷰어 중에는 한 때 최강자의 위치에서 군림했던 ACDSee, 가장 빠른 뷰어로 알려졌던 IrfanView, 충분히 빠른 속도 외에 자동  리샘플링으로 양호한 화질을 자랑하는 FastStone Image Viewer 등이 있습니다.
물론, 국산으로서 속도, 안정성, 편의성 등 뭣 하나 제대로 만든 구석이 없는 알씨 같은 뷰어도 있습니다만…

많은 뷰어를 테스트해본 결과 프리웨어이면서 최고의 속도를 자랑하는 뷰어는 꿀뷰 3입니다.
꿀뷰는 동영상 인코딩 보조도구인 바닥 등의 프로그램을 개발하신 Kipple님께서 개발하신 프리웨어입니다.
여러가지 특징이 있지만, 가장 중요한 특징 2가지는 엄청난 속도편리한 단축키입니다.

1. 속도

전체화면으로 커다란 이미지를 띄울 때 매 화면을 리샘플링하는 것을 포함하여 거의 실시간으로 화면에 출력해줍니다.
JPEG 디코딩 엔진만 가장 빠른 것을 사용하는 것이 아니라, 그 느려터졌다는 JPEG2000 역시 가장 빠른 놈을 사용합니다.


2. 편리한 단축키

사진을 볼 때와 만화책을 볼 때 화면 설정은 다릅니다.
가로로 긴 이미지와 세로로 긴 이미지 또는 화면보다 큰 이미지와 화면보다 작은 이미지를 볼 때는 설정을 다르게 하는 것이 보통이기 때문입니다.

이런 화면 설정의 전환을 간단한 단축키로 지정할 수 있습니다. (그리고, 자동으로 저장됩니다)


그 밖에도 많은 기능과 편리성이 있고, 게시판을 통해서 유저들의 의견을 많이 들어주십니다.
현재 사용하는 이미지 뷰어가 그다지 마음에 들지 않으신다면 꿀뷰 3 강추입니다.

참, 꿀뷰 제작자님께서는 이 프로그램을 완전 무료로 개방하셨기 때문에 (홈페이지에 의하면) 기업이나 관공서/법인/학교/게임방/무인도 등에서 마음껏 사용할 수 있습니다.

수시로 업데이트되고, 아래 홈페이지에서 최신버전을 다운받을 수 있습니다.



하지만, 이 프로그램의 불펌은 완전 금지입니다.
S/W 배포 사이트, 각 커뮤니티 자료실, 개인 블로그 등의 온라인은 물론 CD/DVD 등의 매체를 통한 재배포도 금지되어있습니다.
물론, 이런 저런 변형으로 무설치본 등을 만드는 것도 금지되어있습니다.

불펌 금지는 이런 좋은 프로그램을 무료로 공개해준 개발자분들께의 최소한의 예의라고 생각합니다.



2008년 2월 21일 목요일

블로그용 대형 AnimatedGIF 만드는 방법

인터넷에서 널리 사용되는 그림 포맷에는 gif, jpg(jpeg), png 등이 있습니다.

그런데, 모든 그림 포맷이 순수한 정지화상 1장을 저장하는데 비해 gif는 간단한 동영상을 저장할 수 있는 기능을 갖고 있습니다.
물론, 소리를 같이 저장할 방법이 없기 때문에 순수한 동영상을 대신해서 사용할 수는 없지만, 웹이나 블로그에 간단한 애니메이션을 집어넣을 때는 꽤 쓸만한 기능을 보여줍니다.

블로그 헤더에 간단한 애니메이션 하나 넣겠다고 플래쉬 만들어 올리는 것은 좀 번거롭거든요…

Animated GIF를 만들어주는 도구들이 몇 있는데, 의외로 만족스러운 기능을 제공해주는 프로그램을 보지 못했습니다. 제가 만들고 싶었던 animated gif는 몇 개의 이미지가 페이드인/페이드아웃 되면서 천천히 바뀌는 것이었는데, 이런 비슷한 기능을 해주는 프로그램을 보지 못했습니다.

그래서, freeware 2개를 이용하고 간단한 프로그램을 하나 만들어서 이러한 작업을 해봤습니다.





일단, 준비물은 아래와 같습니다.

1. virtualdub (홈페이지 : http://www.virtualdub.org/, 현재 버전 : 1.7.8)
2. avisynth (홈페이지 : http://www.avisynth.org/, 현재 버전 : 2.5.7)
3. ImageFader for  Blog  (아래 첨부 파일 / 자작)

※ virtualdub와 avisynth 모두 sourceforge를 통해 배포되는 소프트웨어입니다.
    두 프로그램 공히 악성코드에 대한 걱정 전혀 없이 그냥 설치하시면 됩니다.

절차는 아래와 같습니다.


1. 프로그램 설치

avisynth는 프레임 서버라고 하며, 동영상을 편집하는 virtualdub가 동영상이 아닌 소스을 동영상으로 착각하게 하기 위해 설치합니다. (악성 코드에 대한 걱정은 전혀 할 필요 없습니다)
이 프로그램은 Avisynth_257.exe을 실행하면 자동으로 설치됩니다.

사용자 삽입 이미지


virtualdub가 animated-gif 파일을 만들어줍니다.
이 프로그램은 설치 프로그램이 없고, 다운받은 압축파일을 원하는 위치에서 압축을 풀어서 실행하면 됩니다.

사용자 삽입 이미지


ImageFader for Blog는 자작 프로그램입니다.
지정된 폴더에 저장된 이미지들의 크기를 리사이징 해주고 페이딩 효과를 넣어줍니다.
실행파일 달랑 하나로 되어있습니다. 그냥 적절한 위치에 복사만 하면 됩니다.


2. 원하는 이미지 지정

페이딩 효과를 주기 위한 이미지를 정해서 한 폴더에 저장합니다.
여기서는 다음 두 이미지로 작업을 해보겠습니다.

사용자 삽입 이미지사용자 삽입 이미지

크기는 128×160으로 하겠습니다.
두 이미지 파일을 특정 폴더 (예를 들면 c:\temp\1\)에 저장합니다.


3. 페이딩 효과를 준 이미지들 만들기

사용자 삽입 이미지
ImageFader를 사용합니다.
원본이 저장된 폴더 (여기서는 c:\temp\1\)와 새로운 파일이 저장될 폴더 그리고, 이미지의 크기 (128×160)를 지정합니다.

다음으로, 반복횟수와 오버래핑 횟수를 지정합니다.
반복횟수는 한 이미지가 계속 나오는 (즉, 변하지 않는) 시간에 영향을 미치고, 오버래핑 횟수는 한 이미지와 다음 이미지가 변하는 시간에 영향을 미칩니다.
(참고로, 오버래핑 횟수가 크면 좀 정신사납습니다)

마지막으로 아래 닫기 옆에 있는 지정 (이런… 오타네요… 프로그램에 오타라니…) 버튼을 클릭하면 대상 폴더에 blog*.png 파일 여러 개와 blog.avs 파일 하나를 만들어줍니다.

이 blog.avs 파일은 간단한 텍스트 파일이며, 내용은 아래와 같습니다.
 ImageReader ("blog_%03d.png", 1, 30, 12)
(blog_001.png 부터 blog_030.png 까지의 30장을 초당 12프레임의 속도로 읽을 것)

이 텍스트파일을 virtualdub에서 읽어들이면 avisynth가 중간에서 재해석해주는 것이 프레임 서버의 개념입니다.
(프레임 서버의 활용 용도는 무궁무진합니다. DVD 립 기술은 프레임 서버 필터 기술의 발달이었습니다)


사용자 삽입 이미지
4. gif 파일 만들기

위 3번에서 만들어진 blog.avs 파일을 virtualdub에서 읽어들인 다음 File → Export → Animated GIF... 메뉴를 실행하면 gif 파일이 생성됩니다.

실행할 때 한 번만 재생할 것인지, 무한반복할 것인지 또는 일정 횟수만 반복할 것인지를 지정할 수 있습니다.
(animated gif의 기본 기능입니다)



이렇게 만들어진 gif 파일은 대부분의 경우 이미지 뷰어로 볼 수 없습니다. 오로지 IE나 FF 등의 웹브라우저에서만 인식할 수 있습니다.

윈도우에 내장된 뷰어를 포함해서, 일반적인 이미지 뷰어에서는 이 파일을 열어볼 수 없습니다.
또한, 티스토리에서 글 안에 삽입하는 것도 불가능합니다.
(그래서 만들어진 이미지를 올리지 못했습니다)
심지어는 flickr와 같은 전문 이미지 업로드 사이트에서도 인식하지 못합니다.

이 gif파일을 활용하려면 티스토리 관리 기능중 파일 직접 올리기를 이용해서 올린 다음 링크를 걸면 됩니다.
그래서, 본문 안에 삽입하기 보다는 헤더를 꾸미는데 사용하는 것이 적당할 것 같습니다.

본 블로그 맨 위에 있는 이미지가 이런 과정을 거쳐 만들어진 것입니다.

좀 번거롭기는 하지만, 멋지지 않나요?





2008년 2월 17일 일요일

사이트 소개 : 구글체 블로그 헤더 이미지 만들기

구글의 헤더 이미지를 보면 간결하고 깔끔한 느낌을 줍니다.
(특별한 기념일 글씨체 말고, 평소의 이미지를 말합니다)

googlefont.com이라는 사이트에서는 이 구글 헤더의 글씨체로 원하는 문구의 이미지를 만들어줍니다.
사이트에 접속해서 원하는 문구를 넣고 Create logo! 버튼만 클릭하면 이미지가 생성됩니다.

그리고, 이 사이트는 로고를 만드는 것이 본업이 아니라 도메인 판매가 본업인 것 같습니다.
그런데… 이미 선점이 되어있는 도메인도 팔겠다고 하는군요.

bluenlive.combluenlive.net 둘 다 제가 갖고 있는 도메인인데, 이걸 팔겠다니, 원…

아뭏든, 그저 재미로 만들어보기에 좋은 사이트입니다.


사용자 삽입 이미지

이보게, 이거 둘 다 내거일세…




2007년 11월 27일 화요일

심심해서(?) 만들어본 이미지 변형

PhotoShop이나 PaintShop Pro 또, Kai's Power 시리즈를 보면 수많은 훌륭한 이미지 필터들을 볼 수 있습니다.
그런데, M.C.Ecsher의 작품들에서 언급한 Andrew Lipson 님의 홈페이지를 가보면 또 다른 홀랑 깨는 이미지 변형을 볼 수 있습니다.

바로 그 깨는 이미지


이 이미지를 보고 자극 받아서 비슷하게 만드는 방법을 연구해봤습니다.
사실, Lipson님의 홈페이지에 가보면 수학적인 아이디어를 링크걸어 놨습니다 : 여기 클릭
그런데, 영어와 수학의 압박을 이기지 못하고 저만의 솔루션을 만들었습니다. (VC++ 6.0) 휴~

step1. 원본 이미지 선택 그리고, 영역 설정

그냥 적절한 이미지를 고르면 되지만, 사실, 가운데가 사라지므로 가운데를 잘라버려도 되는 이미지를 골라야 합니다.

사용자 삽입 이미지


step2. 잘라낼 영역 선택

역시 적절히 고르면 됩니다. 아래와 같은 정도가 되겠군요. 가운데 검은 네모 부분이 잘라낼 영역입니다. 여기서는 단지 "예"를 들기 위해 저렇게 설정했는데, 가장 나이스하게 하려면 Lipson 님처럼 액자를 드는 것이 가장 좋을 것 같습니다.
사용자 삽입 이미지



step3. 잘라내고 남은 영역의 정확한 구분

네모의 각 변에 연장선을 그어 영역을 쪼갭니다. 가운데 네모를 빼면 8개의 조각(A-H)로 나뉩니다.
사용자 삽입 이미지


step4. 조각을 잘라붙일 영역 선택

원본 이미지는 저대로 놔눕니다. 그리고, 붙일 영역을 쪼갭니다.
일단 시계방향 나선으로 붙이니까 시계방향으로 적절히 선을 긋습니다.

사용자 삽입 이미지


step5. 조각을 잘라붙일 영역을 정확히 지정

붙일 영역을 정확하게 나눕니다. 상세히....
맨아래 오른쪽은 A를 붙이려니 말이 안되는 그림이 나오더군요.
그래서 B부터 붙이고, 나머지는 A~H를 계속 돌아가며 붙입니다.
사용자 삽입 이미지


step6. 이미지 완성

잘 붙이면 아래와 같은 모습이 됩니다..
사용자 삽입 이미지

- 설명을 적기 위해 이미지를 고르다보니 조금 부자연스러운 결과가 나왔습니다만,
  소스를 고르기에 따라서는 괜찮은 결과를 보여줄 수 있습니다.
- 물론, 일일이 만들어 붙인 것이 아니라 VC++로 프로그램을 만들어 돌렸습니다.


사용자 삽입 이미지

설악산~