Powerpoint에서 자르기(Crop)를 통해 잘라낸 사진은 별도로 '그림 압축'을 하지 않았다면, 원본 사진의 정보를 그대로 남게 됩니다. 따라서, 그림 자르기를 다시 실행하면 잘라낼 위치를 변경할 수 있습니다.
지난번 글에서 일괄 자르기로 사진을 잘라내다보면, 사진마다 원하는 영역을 잘라내지 못하고 약간씩 어긋날 수 있습니다. 고정된 삼각대를 이용하여 고정된 위치를 찍은 사진이라면 상관없지만, 손으로 찍은 사진들은 크기도 약간씩 다르고, 위치도 약간씩 어긋나게 찍히다보니 매크로를 이용하여 일괄 자르기를 하더라도 다시 수작업으로 번거롭게 위치를 조정해야하는 일이 발생합니다.
위의 상황과 같이, 잘라낸 영역이 한쪽으로 치우쳐있는 경우, 잘라낼 영역을 그대로 두고, 원본사진을 약간씩 이동하거나, 원본 사진을 그대로 두고 잘라낼 위치를 이동하게 되면, 잘라내는 영역의 크기는 그대로 두고 잘라낼 위치만 조정할 수 있습니다.
혹은 위와 같이 잘라내려는 영역보다 피사체가 크거나 작은 경우에는 잘라낼 영역은 그대로 두고, 원본 사진을 확대, 축소하게 되면 다른 사진과 어울리는 배율로 조정할 수도 있습니다.
이러한 기능을 구현하기 위해 아래와 같이 잘라낸 사진을 이동하거나 확대/축소하는 함수를 만들어두고, 사용자 정의 폼이나 버튼을 만들어 선택된 사진들을 일괄적으로 조정할 수 있도록 해주면, Powerpoint에 여러 개의 사진을 한꺼번에 넣고 일괄적으로 잘라낸 후 원하는 위치로 세부 조정까지 가능한 기능을 구현할 수 있습니다. 작업이 완료된 사진은 압축하기로 불필요한 부분을 삭제하여 파일 용량을 줄여줄 수 있습니다.
Function Crop_MoveSelPictures(iMoveDirection As String, Optional iRatio As Single = 5)
'파워포인트 슬라이드에서 사진을 선택한 후, crop 위치를 옮기는 함수입니다. 여러 사진을 선택해서 작업하는 중 사진이 아닌 일반 도형이 선택되거나, 동영상 등 잘라내기 작업이 되지 않는 개체를 실수로 선택했을 때, 오류 없이 다음 작업을 진행하도록 선언해둡니다.
Dim i As Long, tSel As ShapeRange, tRatio as Single
With tSel(i).PictureFormat.Crop
Select Case UCase(iMoveDirection)
Case "L"
If .PictureOffsetX - .PictureWidth * tRatio / 100 >= (.ShapeWidth - .PictureWidth) / 2 Then
.PictureOffsetX = .PictureOffsetX - .PictureWidth * tRatio / 100
Else
.PictureOffsetX = (.ShapeWidth - .PictureWidth) / 2
End If
Case "R"
If .PictureOffsetX + .PictureWidth * tRatio / 100 <= (.PictureWidth - .ShapeWidth) / 2 Then
.PictureOffsetX = .PictureOffsetX + .PictureWidth * tRatio / 100
Else
.PictureOffsetX = (.PictureWidth - .ShapeWidth) / 2
End If
Case "U"
If .PictureOffsetY - .PictureHeight * tRatio / 100 >= (.ShapeHeight - .PictureHeight) / 2 Then
.PictureOffsetY = .PictureOffsetY - .PictureHeight * tRatio / 100
Else
.PictureOffsetY = (.ShapeHeight - .PictureHeight) / 2
End If
Case "D"
If .PictureOffsetY + .PictureHeight * tRatio / 100 <= (.PictureHeight - .ShapeHeight) / 2 Then
.PictureOffsetY = .PictureOffsetY + .PictureHeight * tRatio / 100
Else
.PictureOffsetY = (.PictureHeight - .ShapeHeight) / 2
End If
End Select
End With
Next
End Function
Dim i As Long, tSel As ShapeRange, tRatio as Single
Set tSel = SelectedShapeRange
tRatio = iRatio
With tSel(i).PictureFormat.Crop
If iEnlarge Then
If iWidth Then .PictureWidth = .PictureWidth * (1 + tRatio / 100)
If iHeight Then .PictureHeight = .PictureHeight * (1 + tRatio / 100)
Else
If iWidth Then .PictureWidth = .PictureWidth * (1 - tRatio / 100)
If iHeight Then .PictureHeight = .PictureHeight * (1 - tRatio / 100)
End If
End With
Next
End Function
댓글 없음:
댓글 쓰기
의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~