MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
ZViewer
e i R f
Anonymous

Contents

1 About
1.1 기능
1.2 개발동기
1.3 개발과정
1.3.1 svn 로그 보기
1.4 앞으로
1.5 연락처
2 기타 소개
3 라이센스
4 게시판
5 개발 위키
6 ScreenShot
7 license
8 개발 관련
8.1 시스템 아이콘 얻기
8.2 zlib 한글 매뉴얼
8.3 Image Library
8.4 nsis
8.4.1 FreeImage
8.4.2 About FreeImage
8.4.3 metadata 가져오기
8.4.4 MFC 에서 그림 찍기
8.4.5 shell 확장 관련 url 들
8.4.6 다른 프로그램들
8.4.7 좋은 기능들

1 About #


1.1 기능 #


  • 탐색기에서 그림 파일에 대고 오른쪽 클릭을 통한 미리보기 기능
  • 20 여종의 그래픽 파일을 지원
  • 캐시 기능을 통한 빠른 파일 이동
  • 빠른 실행 속도

1.2 개발동기 #

취업을 하게 되면서 대부분의 공개된 이미지 보는 프로그램들(알씨, XnView)이 개인에게만 자유롭게 쓸 수 있고, 기업에서의 사용은 라이센스비를 받는 더블 라이센스를 쓰고 있다는 것을 알게 되었습니다. 기업 환경에서도 쓸 수 있는 라이센스를 가진 쓸만한 공개 이미지 뷰어가 거의 없고, 쓸만한 공개된 뷰어들(꿀뷰등)이 탐색기에서 오른쪽 버튼을 통한 미리보기를 제공하지 않아서 이런 기능이 제공되는 쓸만한 이미지 뷰어를 만들어보자는 취지하에 시작하게 된 프로젝트 입니다.

1.3 개발과정 #

C# 으로 먼저 만들었으나 속도의 한계를 느끼고, 다시 Win32 기반의 C++ 로 작업하고 있습니다. 현재 이미지 라이브러리로는 [http]FreeImage 를 사용하고 있습니다. 좋은 라이브러리의 사용으로 인해 다양한 그래픽 파일들을 불러올 수 있습니다. 이미지의 확대, 축소시에 약간 느린것이 단점이지만 2장의 이미지를 한번에 보는 기능을 제외하고는 원하는 거의 대부분의 기능을 가지고 있습니다.

1.3.1 svn 로그 보기 #


1.4 앞으로 #

현재 추가할 첫번째 기능은 속도를 좀더 향상하는 것과, 2장의 이미지를 한꺼번에 보는 DoubleView 기능을 넣는 것입니다. 그리고 설정값들을 저장하는 기능입니다.

추후에는 간단한 필터링, 테두리 기능등을 첨가하여 디지털 카메라를 위한 프로그램 하나를 덧붙이는 것입니다.

1.5 연락처 #

문의 사항은 http://wimy.com/images/email_gmail.png 로 주세요.

2 기타 소개 #


3 라이센스 #


  • GPL
  • 소스를 받아보실 수 있습니다. 소스의 변경은 GPL 을 따릅니다.
  • 개인, 기업, 관공서등 어디에서나 사용하실 수 있습니다.
  • 어디서나 재배포가 가능하여 각종 자료실에 올리실 수 있습니다.
  • http://bbs.kldp.org/viewtopic.php?p=271038

4 게시판 #


5 개발 위키 #


6 ScreenShot #


ZViewer.png


ZViewerAgentScreenShot.png

7 license #


  • 라이센스는 GPL 입니다.

8 개발 관련 #


8.1 시스템 아이콘 얻기 #


8.2 zlib 한글 매뉴얼 #


8.3 Image Library #


8.4 nsis #

  • ZViewer 의 설치 파일은 nsis 를 이용해서 만들었습니다.
  • nsis

8.4.1 FreeImage #

8.4.2 About FreeImage #

ZViewer 에서 현재 사용중인 라이브러리 입니다. 거의 모든 그림 파일을 지원해줍니다.

http://freeimage.sourceforge.net/

8.4.3 metadata 가져오기 #

	fipImage image;
	if ( FALSE == image.load("c:\\a.jpg") )
	{
		cout << "can't load" << endl;
		return;
	}
	fipTag tag;
	fipMetadataFind finder;
	if( finder.findFirstMetadata(FIMD_EXIF_MAIN, image, tag) )
	{
	  do
	  {
		// process the tag
		  cout << "Key : " << tag.getKey() << "\n";
		  cout << "toString : " << tag.toString(FIMD_EXIF_MAIN) << endl;

	  } while( finder.findNextMetadata(tag) );
	}

	// the class can be called again with another metadata model
	if( finder.findFirstMetadata(FIMD_EXIF_EXIF, image, tag) )
	{
	  do
	  {
		// process the tag
		  cout << "Key : " << tag.getKey() << "\n";
		  cout << "toString : " << tag.toString(FIMD_EXIF_MAIN) << endl;
	  }
	  while( finder.findNextMetadata(tag) );
	}

8.4.4 MFC 에서 그림 찍기 #

   FIBITMAP * pBitmap = GenericLoader("a.pns", 0); 

   CDC * pDC = this->GetDC(); 

   //int r = SetStretchBltMode(pDC, 3 /* COLORONCOLOR */); 
   int r = StretchDIBits(*pDC, 
      0, 0, 300, 300, 
      0, 0, (int)FreeImage_GetWidth(pBitmap), (int)FreeImage_GetHeight(pBitmap), 
      FreeImage_GetBits(pBitmap), 
      FreeImage_GetInfo(pBitmap), 
      0 /* DIB_RGB_COLORS */, 0x00CC0020 /* SRCCOPY */); 

   if ( r == GDI_ERROR ) 
   { 
      MessageBox("Can't draw"); 
   }

8bit color 를 Resize 를 할 때 색깔이 이상한 현상이 있는데 32bit 로 변환(FreeImage_ConvertTo32Bits) 해야하는 버그( ? ) 가 있는 듯 합니다.

8.4.5 shell 확장 관련 url 들 #


알씨와 같이 탐색기에서 오른쪽 버튼에 미리보기를 위한 자료들

  • http://www.codeguru.com/Cpp/COM-Tech/shell/article.php/c4505/

  • PlatformSDK 를 설치 후, SampleswinuiShell 부분을 보자.

  • http://www.codeproject.com/shell/shellextguide7.asp

  • http://www.codeproject.com/KB/shell/ - Interacting with shell lecture list

  • IContextMenu 에서 no GUID has been... 이라는 메시지가 뜨면, _ATL_NO_UUIDOF 를 C/C++ 탭의 PreProcessor 에 선언해주면 된다.

  • .rgs 파일을 등록 중, "등록하고 있습니다." 라는 에러 메시지가 뜨면 필요한 .dll 들이 제대로 있는지 확인해보자.

  • regsvr32 를 할 때 지정된 모듈을 찾을 수 없다라는 메시지가 뜨면, Dependency check 를 해본다. MFCd.dll 등이 필요할 수도 있으면, static link 를 해준다.

  • 쉘의 현재 아이콘들 받아오기 : http://www.codeproject.com/shell/shellicon.asp

  •  text file 에 연결할 경우 다음과 같이 한다. .bmp 파일에 연결할 경우 아래의 txtfile 을 .bmp 로 고친다.
    
    HKCR
    {
    	NoRemove txtfile
    	{
    		NoRemove ShellEx
    		{
    			NoRemove ContextMenuHandlers
    			{
    				ForceRemove SimpleShlExt = s `'{5E2121EE-0300-11D4-8D3B-444553540000}'`
    			}
    		}
    	}
    }
    
    


    8.4.6 다른 프로그램들 #


    8.4.7 좋은 기능들 #


    • ACDSee 는 디카족을 위해서 찍은 사진을 날짜로 정렬해주는 캘린더 기능이 있다. 왼쪽에 달력이 나오고, 오른쪽에 그날에 찍은 사진들을 보여준다.