
Imagick::textureImage 함수는 텍스처링을 위해 텍스처이미지를 사용합니다. 이 함수는 텍스처이미지의 크기가 원본이미지의 크기와 동일할 때만 정상적으로 작동하는 이유는 다음과 같습니다.
- 텍스처이미지의 크기가 원본이미지의 크기와 동일할 때, Imagick은 텍스처이미지를 원본이미지와 동일한 크기로 확장하지 않습니다. 따라서, 원본이미지의 크기가 1000x1000 픽셀일 때, 텍스처이미지의 크기가 1000x1000 픽셀인 경우, Imagick은 텍스처이미지를 원본이미지와 동일한 크기로 확장하지 않습니다.
- 텍스처이미지의 크기가 원본이미지의 크기보다 작을 때, Imagick은 텍스처이미지를 원본이미지의 크기로 확장합니다. 따라서, 원본이미지의 크기가 1000x1000 픽셀일 때, 텍스처이미지의 크기가 100x100 픽셀인 경우, Imagick은 텍스처이미지를 원본이미지의 크기로 확장합니다.
이 문제를 해결하는 방법은 다음과 같습니다.
- 텍스처이미지의 크기를 원본이미지의 크기와 동일하게 설정합니다.
- Imagick::resizeImage 함수를 사용하여 텍스처이미지를 원본이미지의 크기로 확장합니다.
예를 들어, 원본이미지의 크기가 1000x1000 픽셀일 때, 텍스처이미지의 크기가 1000x1000 픽셀인 경우, 다음 코드를 사용할 수 있습니다.
#hostingforum.kr
php
$image = new Imagick('원본이미지.jpg');
$texture = new Imagick('텍스처이미지.jpg');
$texture->resizeImage(1000, 1000, Imagick::FILTER_LANCZOS, 1);
$image->textureImage($texture, 100, 100);
$image->writeImage('결과이미지.jpg');
또는, 텍스처이미지의 크기를 원본이미지의 크기와 동일하게 설정할 수 있습니다.
#hostingforum.kr
php
$image = new Imagick('원본이미지.jpg');
$texture = new Imagick('텍스처이미지.jpg');
$texture->resizeImage(1000, 1000, Imagick::FILTER_LANCZOS, 1);
$image->textureImage($texture, 100, 100);
$image->writeImage('결과이미지.jpg');
이러한 방법을 사용하면, 텍스처이미지의 크기가 원본이미지의 크기와 동일할 때도 텍스처링이 정상적으로 작동할 수 있습니다.
2025-03-14 18:39