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의 옵션과 같이 사용하게되면, 전체의 사이즈를 원본 사이즈보다 크게 지정하고, 중앙에 사진을 위치시키면
원본의 사이즈의 크기를 변경하지 않고 여백을 추가할 수 있게됩니다.
'IT 공부 > PHP' 카테고리의 다른 글
PhpSpreadSheet를 이용하여, Excel파일 일기 / 쓰기 (0) | 2022.11.02 |
---|---|
[ PHP ] cURL이용하여 API통신하기 (0) | 2022.09.02 |
[ PHP ] PDF파일의 페이지 수를 알아내는 법 (0) | 2022.07.06 |
[ PHP ] Selenium사용해서, 브라우저 자동화 테스트하기 (0) | 2022.06.14 |
[ PHP ] PDF 파일을 이미지 파일로 ( convert PDF to image ) (0) | 2022.06.01 |