내가 한 노력들

[ PHP ] ImageMagick을 이용하여, PDF파일을 image로 변경 또는 그 반대 본문

IT 공부/PHP

[ PHP ] ImageMagick을 이용하여, PDF파일을 image로 변경 또는 그 반대

JONGI-N CHOI 2022. 7. 13. 12:07

 

PHP의 ImageMagick을 이용하면, 이미지 관련된 여러 작업을 쉽게 할 수 있습니다. 

예를 들어서, 이미지의 확장자, 사이즈, 회전, 색상, 여백등등 다양한 작업을 할 수 있습니다. 

 

PDF 파일을 Image 파일로 변경

convert target.pdf image.png

 

위의 명령어만으로도 변경가능합니다. 

 

여기서 여러가지 옵션을 추가할 수 있는데, 제가 사용했던 옵션들은 아래에 정리해뒀습니다. 

 

 

 

 

Image 파일을 PDF파일로 저장 

convert target.png pdf.pdf

그 반대의 경우도 마찬가지로 위의 간단한 명령어로 변경이 가능합니다. 

 

여기서도 마찬가지로 여러가지 옵션을 사용할 수 있고, 

 

만약에 여러 사진을 하나의 PDF파일로 변경하고 싶은 경우에는 -adjoin 옵션을 사용할 수 있습니다.

 

$images = "-adjoin image1.png -adjoin image2.png -adjoin image3.png";

exec("convert $iamges pdf.pdf", $return, $code);

위와 같이 실제 PHP 코드에서 실사용이 가능합니다. 

 

아래의 사진은 실제로 두개의 사진파일을, 하나의 pdf로 변경한 사진입니다.

 

 

ImageMagick의 다양한 옵션

 

-ordered-dither {옵션} 

threshold   1x1   Threshold 1x1 (non-dither)
checks      2x1   Checkerboard 2x1 (dither)
o2x2        2x2   Ordered 2x2 (dispersed)
o3x3        3x3   Ordered 3x3 (dispersed)
o4x4        4x4   Ordered 4x4 (dispersed)
o8x8        8x8   Ordered 8x8 (dispersed)
h4x4a       4x1   Halftone 4x4 (angled)
h6x6a       6x1   Halftone 6x6 (angled)
h8x8a       8x1   Halftone 8x8 (angled)
h4x4o             Halftone 4x4 (orthogonal)
h6x6o             Halftone 6x6 (orthogonal)
h8x8o             Halftone 8x8 (orthogonal)
h16x16o           Halftone 16x16 (orthogonal)
c5x5b       c5x5  Circles 5x5 (black)
c5x5w             Circles 5x5 (white)
c6x6b       c6x6  Circles 6x6 (black)
c6x6w             Circles 6x6 (white)
c7x7b       c7x7  Circles 7x7 (black)
c7x7w             Circles 7x7 (white)

이미지에 dither method를 적용시킨다. 

 

-colorspace GRAY

이미지를 회색조로 변경 

 

-alpha off

alpha 채널을 제거 

 

-density {value}

DPI(Dots Per Inch)관련 설정으로 DPI는 1inch안에 몇 개의 점이 들어가느냐를 의미한다. 

DPI가 높을 수록 이미지는 선명해진다. 

 

-quality {value}

품질 관련된 옵션으로, 1~100까지의 값을 지정할 수 있습니다.

100으로 설정하게 되면, 무손실 압축이 가능합니다. 

 

-resize {value}
이미지나 파일의 사이즈를 변경하는 옵션으로 
64x64로 하면 가로 세로의 픽셀을 64로 변경하는데, 자동적으로 사진의 비율에 맞게 변경을 합니다. 
따라서, 비율 무시하고 변경하고 싶은 경우에는 "\!" 를 뒤에 추가합니다. (64x64\!)
 
-rotate {value}
 
이미지를 회전시키는 옵션
90을 value에 넣게되면, 시계방향으로 90도 회전하게 됩니다. 
 
 
-gravity {value}
 
사진의 위치를 변경할 수 있습니다. 
 
예를 들어서 center를 입력하게되면, 사진이 중앙에 위치하게 됩니다.
extent 옵션과 같이 사용하여 이용하기 좋습니다. 
 
-extent {value}
 
사진 전체의 틀의 사이즈를 지정할 수 있습니다. 원본 사진의 사이즈를 키우는 것이 아닌 전체 파일의 사이즈를 지정합니다. 
따라서 위의 gravity의 옵션과 같이 사용하게되면, 전체의 사이즈를 원본 사이즈보다 크게 지정하고, 중앙에 사진을 위치시키면 
원본의 사이즈의 크기를 변경하지 않고 여백을 추가할 수 있게됩니다.