카테고리 글 보관함: 포토샵

[MFC] 투명 아이콘 제작하여 적용하기

이 글은

http://www.anycoding.com/bbs/board.php?bo_table=acProgram_Cpp&wr_id=3783&page=&sca=&sfl=mb_id%2C1&stx=winterer

를 참고하여 작성하였습니다.

 

투명 이미지에 대해

 

이미지를 한 번쯤 다뤄보신 분들이라면 투명 이미지를 많이 접해보셨을 겁니다. 특히 GIF 파일 중에 투명 이미지가 많습니다. 아이콘 이미지를 쓰다 보면 이미지 뒤의 배경이 가려져 보이지 않는 경우가 종종 있기 때문입니다. 아래 그림을 보시면 한 번에 이해하실 겁니다.

 

trans1

그림1. 배경이 흰색일 땐 차이가 없어보이는 이미지였는데…

trans2

그림2. 배경이 흰색이 아닐 때 이런 차이가!

 

그렇다면 투명 이미지는 GIF만 가능한 것일까요? 아닙니다. PNG도 되고 심지어 BMP도 됩니다. 하지만 JPG 등의 압축 형식은 지원하지 않습니다. 투명한 BMP 파일은 아마 처음 들어보신 분들도 있을겁니다. 그런데 투명한 BMP가 훨씬 품질과 표현 능력이 뛰어납니다. GIF나 PNG는 투명한 부분, 투명하지 않은 부분으로만 나눌 수 있다면 BMP는 투명한 정도를 조절할 수 있습니다.(!) 대신 용량이 좀 큽니다. 근데 뭐… 아이콘 만들건데 커봤자 얼마나 크겠습니까? 그래서 이 포스트에선 BMP파일을 이용하여 아이콘을 만들어 적용해 보겠습니다.

 

인터넷에서 받은 이미지를 투명한 BMP로 변환하기

 

  많은 분들이 인터넷에서 GIF, JPG, BMP 파일을 받아 투명한 아이콘을 제작하고 싶으실 텐데요. 여기에서도 역시 인터넷에서 받은 이미지를 이용하여 투명한 아이콘을 만들어보겠습니다.

 

0   이미지를 불러옵니다.

 

1  Image – Mode – RGB Color 메뉴를 선택합니다.

 

trans3

2  이미지가 작다면 왼쪽 아래의 돋보기 도구를 이용하여 이미지를 확대합니다.

팁 :  Alt키를 누른 채로 마우스 클릭을 하면 축소됩니다.
trans4

3  Magic Wand Tool을 선택하고 그림 부분을 클릭하여 선택 영역으로 만듭니다.

팁1 : Alt키를 누르면서 마우스 클릭을 하면 선택 영역이 해제 됩니다.

팁2 : 아래 그림의 Tolerance를 크게 하면 더 넓은 범위가 선택됩니다.
trans5

modified1

 

4  추가로 Rectangular Marquee Tool을 선택하여 세밀하게 선택 영역을 조절합니다. 이 때 Shift키를 누르면서 드래그를 하셔야 드래그한 부분이 선택영역이 됩니다.

팁 : 이 때에도 Alt키를 누르면서 드래그를 하면 선택 영역이 해제됩니다.
trans6

5  마우스 오른쪽 키를 누른 후 Select Inverse를 선택합니다. 그러면 선택 영역이 반전됩니다.
trans7

6  화면 오른쪽 아래의 Channels탭을 선택하고 Create New Channel버튼을 클릭하여 Alpha 채널을 추가합니다. Alpha 채널에서 투명한 부분을 만들거에요.
trans8

7  연필 도구를 선택하고 브러쉬의 크기를 적당히 조절 후 불투명하게할 부분을 흰색으로 칠해줍니다. 연필 도구가 보여야할 자리에 브러쉬 도구가 보이면 이를 꾸욱 누른 후(1~2초간) 연필 도구를 선택하여 주세요. 검은색 부분이 투명하게 보이고 회색인 부분은 살짝 투명하게 보이겠죠?
modified2

8  File – Save As… 메뉴를 선택한 후 대화상자에서 Format을 BMP로 선택해 줍니다. Save Option에서 Alpha Channels가 체크되었는지 확인해 주세요. 이 때 1번 단계에서 RGB Color를 선택하지 않으면 Alpha Channels 체크 박스가 활성화 되어 있지 않을 수 있습니다. 확인 후 저장!
trans11

9  Depth를 32비트로 선택하고 OK버튼을 눌러줍니다.
trans12

 

MFC 응용 프로그램에 적용하기

 

제목 앞에 MFC가 붙어 있는 것을 의아해 하시는 분들이 있을 것 같습니다. 그리고 아이콘 만들어보려고 검색해서 오신 분들도 있을 거구요. MFC가 뭔지 모르시면 다른 페이지로 넘어가셔도 됩니다. 간단히 설명하자면 MFC는 Visual C++에 포함된 클래스 이름이에요. 윈도우 프로그램을 개발할 때 쓰이는 도구지요. 준비가 되신 분은 Visual Studio를 실행하여 주세요. 여기에서는 Visual Studio 2008 SP1을 기준으로 설명드리겠습니다. 리본 인터페이스에 적용해 보도록 하지요.

 

1  MFC 프로젝트를 생성합니다. 저는 아래 그림과 같이 설정을 하였습니다.

 

ribbon1

ribbon2

2  Res 폴더에 아까 작업한 BMP 파일을 복사합니다.

 

3  리소스에 2단계에서 복사한 파일을 추가합니다. 저는 리소스 ID를 IDB_BITMAP1로 지정하였습니다. (사실 아무 지정도 안한거)

 

4  MainFrm.cpp의 InitializeRibbon 함수에서 Home 카테고리를 추가하는 부분과 같은 방법으로 Test 카테고리를 만듭니다.

 

// “테스트 카테고리” 추가
CMFCRibbonCategory* pCategoryTest = m_wndRibbonBar.AddCategory(_T(“테스트”), IDB_WRITESMALL, IDB_BITMAP1);

// “이미지” 패널 추가
CMFCRibbonPanel* pPanelImage = pCategoryTest->AddPanel(_T(“이미지”));

 

 // “투명” 버튼 추가
pPanelImage->Add(new CMFCRibbonButton(1234, _T(“투명”), -1, 0));

 

// 빠른 실행 도구 모음 명령을 추가합니다.
CList<UINT, UINT> lstQATCmds;

lstQATCmds.AddTail(ID_FILE_NEW);
lstQATCmds.AddTail(ID_FILE_OPEN);
lstQATCmds.AddTail(ID_FILE_SAVE);
lstQATCmds.AddTail(ID_FILE_PRINT_DIRECT);

m_wndRibbonBar.SetQuickAccessCommands(lstQATCmds);

 

진한 색 부분이 새로 추가한 부분입니다. 빨간색 부분에 유의하여 작성하시면 됩니다. CMFCRibbonButton의 4번째 파라메터 값인 0은 IDB_BITMAP1의 0번째 인덱스를 뜻합니다. 이 글의 가장 처음에 링크한 주소를 참고하세요. 이렇게 하여 빌드하면 다음과 같이 실행됩니다.

 

ribbon3

 

그런데 버튼이 활성화되어 있지 않죠? 이건 리본바의 버튼은 태생이 메뉴이기 때문에 그렇습니다. 활성화하려면 ON_COMMAND로 메세지 맵을 만들어야 합니다.

 

5  MainFrm.h와 MainFrm.cpp에 아래와 같이 코드를 추가합니다.

 

함수 선언 부분 (MainFrm.h)

 

// 생성된 메시지 맵 함수
protected:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnFilePrint();
afx_msg void OnFilePrintPreview();
afx_msg void OnUpdateFilePrintPreview(CCmdUI* pCmdUI);
 afx_msg void OnBtnTransparent();

 

메세지 맵 (MainFrm.cpp)

 

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx)
ON_WM_CREATE()
ON_COMMAND(ID_FILE_PRINT, &CMainFrame::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CMainFrame::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CMainFrame::OnFilePrintPreview)
ON_UPDATE_COMMAND_UI(ID_FILE_PRINT_PREVIEW, &CMainFrame::OnUpdateFilePrintPreview)

 ON_COMMAND(1234, OnBtnTransparent)
END_MESSAGE_MAP()

 

함수 정의 (MainFrm.cpp)

 

void CMainFrame::OnBtnTransparent()
{
}

 

이렇게 하여 실행하면 아래와 같이 버튼이 활성화 됩니다.

 

ribbon4

 

 

덧. 네이버 에디터의 인용구 기능 때문에 1시간 작업한 내용 다 날라갔다 ㅅㅂ

[기초 실습] 6. 특정 부분 색상 바꾸기

1 | File – Open 메뉴를 선택하여 원하는 이미지를 불러오세요.

 

2 | 마술봉 모양의 아이콘을 꾸욱 누르시면 Quick Selection Tool과 Magin Wand Tool 중 하나를 선택할 수 있습니다. 색상을 바꿀 부분을 선택하기 위해 마술봉 도구를 선택하세요.

 

change color - 1

3 | 옵션바에서 Add to selection 버튼을 누르고 Tolerance의 값을 적당히 조절합니다. 여기서는 40으로 설정하였습니다.

change color - 2

 

4 | 색상을 바꿀 부분을 마우스로 클릭하여 선택하세요. Add to selection 버튼을 클릭한 상태이기 때문에 선택되지 않은 부분을 한 번 더 마우스 클릭하시면 해당 부분도 선택 영역이 됩니다.

change color - 3

 

5 | 선택이 되지 않은 작은 영역을 선택하기 위해서는 섬세한 작업이 필요합니다. 돋보기 도구를 선택하세요. 

change color - 4

 

6 | 이미지를 클릭하시면 이미지가 확대가 됩니다. (키보드의 Alt 키를 누른 상태에서 이미지를 클릭하면 축소가 되어요.) 적당히 확대한 후 다시 마술봉 도구를 선택하고 선택되지 않은 작은 영역을 클릭하세요.

change color - 5

 

7 | Image – Adjustments – Hue/Saturation 메뉴를 선택하신 후 Hue 값을 적절히 조절하세요.

(Hue/Saturation에 대해서는 추후 다시 설명할 예정입니다)

change color - 6

 

8 | 완성! 다음 그림은 원본 이미지이고 그 아래의 그림은 편집 후 이미지입니다. 
은방울꽃

은방울꽃edit

[기초 실습] 5. 어두운 사진을 밝게

1 | File – Open 메뉴를 선택하여 어두운 사진을 불러오세요. 필요하시면 첨부파일의 02-1JPG를 다운받아 여세요. (책에 있던 이미지라 저작권 문제 걸리려나 ㄷㄷ)

brighten - 1

2 | Image – Adjustments – Shadows/Highlights 메뉴를 선택하세요.

 

brighten - 2

3 | Shadows와 Highlights의 Amount를 적절히 조절하세요.

brighten - 3

 

Shadows의 Amount를 크게 하면?

어두웠던 부분이 밝아집니다.

 

Highlights의 Amount를 크게 하면?

밝았던 부분이 어두워집니다.

4 | 완성!

brighten - 4

 

 

Shadows/Highlights에 대한 자세한 튜토리얼을 원하시면 다음 사이트를 참고하세요.

http://www.digitalproducer.com/2003/10_oct/tutorials/10_27/pscsshadow031028.htm

 

Shadows, Highlights 효과를 너무 주었을 때의 노이즈 현상과 이를 해결하는 방법에 대해 언급하고 있습니다.

[기초 실습] 4. 이미지 여러 개 배치하기

★ 이번 강좌는 CS5로 진행합니다. CS4와 차이는 없습니다.

 

★ 강좌의 내용을 따라해보고 싶은데 이미지가 준비되지 않았다면 첨부 파일의 뽀로로.zip을 다운받아 주세요.

 

1 | File – Open 메뉴를 선택하세요.

2 | 아래와 같은 화면에서 배치할 이미지를 한꺼번에 불러옵니다. Ctrl 키를 누른 상태에서 마우스로 이미지를 하나씩 클릭하면 여러개를 선택할 수 있습니다.

several - 1
3 | File – New 메뉴를 선택하세요. 아래와 같은 창이 뜨면 Width와 Height를 적절히 선택하세요. 저같은 경우 2에서 불러온 이미지 4개가 모두 280 x 280 픽셀의 크기였기 때문에 560 x 560 픽셀로 설정하였습니다.
several - 2

4 | Window – Arrange – Float All in Windows 메뉴를 선택하세요. 그러면 이미지의 윈도우들이 분리되어 배치됩니다.

 

several - 3

 

 

Window – Arrange 기본값

 

Consolidate All to Tabs을 누르면 기본값으로 배치됩니다.

5 | 가장 처음 배치할 이미지의 창 제목을 클릭하세요. 그럼 오른쪽의 확대, 축소, 닫기 버튼 색깔이 달라질거에요. 이것은 ‘이제부터 이 이미지를 편집하겠다’라는 의미입니다. 다음으로 도구 상자의 가장 위에 있는 이동 도구를 클릭하고 이미지를 드래그 하여 비어 있는 창으로 (아래 그림의 화살표 방향) 드래그해보세요. 그러면 이미지가 비어 있는 창으로 복사가 됩니다.
several - 4
6 | 이미지를 이동시키면 해당 창이 활성화가 되요. 즉, 해당 창을 편집할 수 있는 상태가 됩니다. 아래 그림처럼 이동된 이미지의 위치가 마음에 들지 않으면 다시 선택 도구로 위치를 이동시켜주세요.
several - 5
7 | 나머지 그림에 대해서도 똑같은 작업을 하면 완성.
뽀로로

[기초 실습] 3. 이미지 테두리 둥글게 하기

이번 강좌는 CS5로 진행합니다. CS4와 차이는 없습니다.

 

1 | File – Open 메뉴를 선택하여 원하는 사진을 불러오세요.

2 | 오른쪽의 Layers 패널에서 Background 레이어를 더블클릭하고 OK버튼을 누릅니다.
이렇게 하면 Background 레이어를 수정할 수 있게 됩니다.
(기본적으로 사진을 불러오면 Background 레이어에 들어있으므로 사진을 직접 편집할 수 없습니다)
round - 2

레이어란?

 

포토샵에서 레이어는 투명한 필름을 떠올리시면 됩니다. 투명한 필름 위에 그림을 그리고 이를 겹쳐 놓으면 맨 위의 그림이 뒤의 그림을 가리겠죠? 이랬을 때 장점은 그림을 수정할 때 해당 필름 위의 그림만 수정할 수 있다는 것입니다. 예를 들어 배경은 그대로 두고 캐릭터만 수정하는 경우 캐릭터가 그려진 필름만 바꾸면 되니깐요. 이 때 필름에 해당되는 것이 레이어입니다.

3 | 도구 상자에서 셰이프 도구를 길게 눌러 둥근 사각 셰이프 도구를 선택합니다.

 round - 3
4 | 옵션 바에서 셰이프 선택 아이콘(왼쪽 빨간 사각형)이 선택되었는지 확인하고 Radius 값을 40으로 지정하세요. Radius 값이 클수록 선택한 영역의 모서리가 더욱 둥글어 집니다.
round - 4
5 | 둥근 테두리 효과를 넣을 부분을 드래그합니다.

round - 5
6 | Layers 패널에서 Shape 1 레이어를 아래로 드래그해 일반 레이어로 변경한 Layer 0 레이어 아래로 이동시켜줍니다.

round - 6
7 | 사진이 있는 Layer 0 레이어를 마우스 오른쪽 버튼으로 클릭하여 Create Clipping Mask를 눌러주세요. 그러면 셰이프 도구로 선택한 영역 안에서만 사진이 보입니다.

round - 7

8 | 도구 상자에서 자르기 도구를 선택하고 셰이프 도구로 선택한 영역과 일치하도록 드래그 해주세요. 그리고 엔터키를 누르면 드래그한 영역만 남고 나머지 영역이 잘립니다.
round - 8
9 | 완성!
벌노랑이Round