์ ๋ฌด/๊ต์ก
>ํ๋ก๊ทธ๋๋ฐ ๊ด๋ จ
๐ PHP ์ค๊ธ - 4์ฃผ์ฐจ: ํ์ผ ์ ๋ก๋ ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ - 04 ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ (GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
				์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
 - ๋ผ์ด์ ์ค: free
 - ์ด์์ฒด์ :
 - ํ์ผ ํฌ๊ธฐ: 0
 
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
 - ๋ค์ด๋ก๋ ์: 1
 - ์กฐํ์: 100
 
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
 - ๋ฑ๋ก์ผ: 2025-07-27 19:47:28
 
- ์ค๋ช
๐ PHP ์ค๊ธ - 4์ฃผ์ฐจ: ํ์ผ ์ ๋ก๋ ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ - 04 ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ (GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
์ด๋ฒ #PHP ์ค๊ธ 4์ฃผ์ฐจ์์๋ #ํ์ผ ์ ๋ก๋๋ #์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค. ํนํ #GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ์ด๋ฏธ์ง #๋ฆฌ์ฌ์ด์ง ๋ฐ #์ธ๋ค์ผ ์์ฑํ๋ ๊ณผ์ ์ ์ด์ ์ ๋ง์ถ ๊ฑฐ์์. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ์์๊ฒ ๋ค์ํ ํฌ๊ธฐ์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๊ฑฐ๋, ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ ๋ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ํ์์ ์ธ ๊ธฐ์ ์ด์ฃ .
1. GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ดํดํ๊ธฐ
#GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ PHP์์ ์ด๋ฏธ์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑํ๊ณ  ์กฐ์ํ  ์ ์๋๋ก ํด์ฃผ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์
๋๋ค. ์๋ฒ์ #PHP์ ํจ๊ป GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ด ์์ด์ผ๋ง ์ฌ์ฉํ  ์ ์์ด์. ๋๋ถ๋ถ์ ์น ํธ์คํ
 ํ๊ฒฝ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋์ด ์์ง๋ง, ํน์ ์๋ํ์ง ์๋๋ค๋ฉด ์๋ฒ ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ํ๊ฑฐ๋ phpinfo() ํจ์๋ฅผ ํตํด GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฑํ ์ฌ๋ถ๋ฅผ ํ์ธํ  ์ ์์ต๋๋ค.
GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์ํ ์ด๋ฏธ์ง ํ์์ ์ง์ํ๋๋ฐ์, ์ฃผ๋ก #JPEG, #PNG, #GIF ๋ฑ์ ํ์์ ๋ค๋ฃฐ ์ ์์ต๋๋ค. ๊ฐ ํ์์ ๋ง๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ณ ์ธ ์ ์์ฃ .
2. ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๊ธฐ๋ณธ ์๋ฆฌ
#์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง์ ์๋ณธ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋๋ค. GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ฃผ๋ก ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ด๋ฃจ์ด์ง๋๋ค.
#์๋ณธ ์ด๋ฏธ์ง ๋ก๋:
imagecreatefromjpeg(),imagecreatefrompng(),imagecreatefromgif()๋ฑ ์๋ณธ ์ด๋ฏธ์ง ํ์์ ๋ง๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํฉ๋๋ค. ์ด ํจ์๋ค์ #์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ๋ฐํํฉ๋๋ค.#์๋ก์ด ์บ๋ฒ์ค ์์ฑ:
imagecreatetruecolor()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์ฌ์ด์ง๋ ์ด๋ฏธ์ง์ ์๋ก์ด ํญ๊ณผ ๋์ด๋ฅผ ๊ฐ์ง ๋น ์บ๋ฒ์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด ์บ๋ฒ์ค๋ ์ด๋ฏธ์ง ๋ฆฌ์์ค ํํ๋ก ๋ฐํ๋ฉ๋๋ค.#์ด๋ฏธ์ง ๋ณต์ฌ ๋ฐ ๋ฆฌ์ํ๋ง:
imagecopyresampled()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณธ ์ด๋ฏธ์ง ๋ฆฌ์์ค์ ํน์  ๋ถ๋ถ์ ์๋ก์ด ์บ๋ฒ์ค์ ๋ณต์ฌํ๋ฉด์ ๋์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค. ์ด ํจ์๋ ์ด๋ฏธ์ง ํ์ง์ ์ ์งํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.#์๋ก์ด ์ด๋ฏธ์ง ์ ์ฅ:
imagejpeg(),imagepng(),imagegif()๋ฑ ์ํ๋ ์ถ๋ ฅ ํ์์ ๋ง๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ์์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ํ์ผ๋ก ์ ์ฅํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ์ ์ง์  ์ถ๋ ฅํฉ๋๋ค.#๋ฉ๋ชจ๋ฆฌ ํด์ :
imagedestroy()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ด ๋๋ ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ํด์ ํฉ๋๋ค. ์ด๋ ์๋ฒ ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
3. ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ ์ฝ๋ ๊ตฌํ
์ด์  ์ค์  ์ฝ๋๋ฅผ ํตํด ์ด๋ฏธ์ง #๋ฆฌ์ฌ์ด์ง๊ณผ #์ธ๋ค์ผ ์์ฑ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ ๊ฐ๋จํ ํ์ผ ์ ๋ก๋ ํ ์ฆ์ #์ธ๋ค์ผ์ ์์ฑํ๋ ์๋๋ฆฌ์ค๋ฅผ ๊ฐ์ ํฉ๋๋ค.
PHP
<?php
// ์
๋ก๋๋ ํ์ผ์ด ์๋์ง ํ์ธ
if (isset($_FILES['uploadFile'])) {
    $uploadDir = 'uploads/'; // ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋  ๋๋ ํ ๋ฆฌ
    if (!is_dir($uploadDir)) {
        mkdir($uploadDir, 0777, true); // ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ์์ฑ
    }
    $fileName = $_FILES['uploadFile']['name'];
    $fileTmpName = $_FILES['uploadFile']['tmp_name'];
    $fileSize = $_FILES['uploadFile']['size'];
    $fileError = $_FILES['uploadFile']['error'];
    $fileType = $_FILES['uploadFile']['type'];
    $fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
    $allowedExt = ['jpg', 'jpeg', 'png', 'gif'];
    // ํ์ฉ๋ ํ์ฅ์์ธ์ง ํ์ธ
    if (in_array($fileExt, $allowedExt)) {
        if ($fileError === 0) {
            if ($fileSize < 5000000) { // 5MB ๋ฏธ๋ง
                $fileNewName = uniqid('', true) . '.' . $fileExt;
                $fileDestination = $uploadDir . $fileNewName;
                // ํ์ผ ์
๋ก๋
                if (move_uploaded_file($fileTmpName, $fileDestination)) {
                    echo "ํ์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์
๋ก๋๋์์ต๋๋ค: " . $fileNewName . "<br>";
                    // --- ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ ์์ ---
                    $thumbDir = 'thumbnails/'; // ์ธ๋ค์ผ์ด ์ ์ฅ๋  ๋๋ ํ ๋ฆฌ
                    if (!is_dir($thumbDir)) {
                        mkdir($thumbDir, 0777, true); // ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด ์์ฑ
                    }
                    $thumbWidth = 200; // ์ธ๋ค์ผ ํญ
                    $thumbHeight = 200; // ์ธ๋ค์ผ ๋์ด
                    // ์๋ณธ ์ด๋ฏธ์ง ๋ก๋
                    $sourceImage = null;
                    if ($fileExt == 'jpg' || $fileExt == 'jpeg') {
                        $sourceImage = imagecreatefromjpeg($fileDestination);
                    } elseif ($fileExt == 'png') {
                        $sourceImage = imagecreatefrompng($fileDestination);
                    } elseif ($fileExt == 'gif') {
                        $sourceImage = imagecreatefromgif($fileDestination);
                    }
                    if ($sourceImage) {
                        $sourceWidth = imagesx($sourceImage);
                        $sourceHeight = imagesy($sourceImage);
                        // ๋น์จ ์ ์งํ๋ฉฐ ์ธ๋ค์ผ ํฌ๊ธฐ ๊ณ์ฐ
                        $ratio = max($thumbWidth / $sourceWidth, $thumbHeight / $sourceHeight);
                        $newWidth = $sourceWidth * $ratio;
                        $newHeight = $sourceHeight * $ratio;
                        // ์๋ก์ด ์บ๋ฒ์ค ์์ฑ
                        $thumbImage = imagecreatetruecolor($thumbWidth, $thumbHeight);
                        // ํฌ๋ช
๋ ์ ์ง (PNG, GIF์ ๊ฒฝ์ฐ)
                        if ($fileExt == 'png' || $fileExt == 'gif') {
                            imagealphablending($thumbImage, false);
                            imagesavealpha($thumbImage, true);
                            $transparent = imagecolorallocatealpha($thumbImage, 255, 255, 255, 127);
                            imagefilledrectangle($thumbImage, 0, 0, $thumbWidth, $thumbHeight, $transparent);
                        }
                        // ์ด๋ฏธ์ง ๋ณต์ฌ ๋ฐ ๋ฆฌ์ํ๋ง (๋น์จ์ ๋ง์ถฐ ์ค์ ํฌ๋กญ ๋๋ ์ฌ๋ฐฑ ์ถ๊ฐ)
                        // ์ฌ๊ธฐ์๋ ๊ฐ๋จํ๊ฒ ๋น์จ์ ๋ง์ถฐ ์ค์ด๊ณ , ์ธ๋ค์ผ ํฌ๊ธฐ์ ๋ง์ถฐ ์ค์์ ์๋ผ๋ด๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ
                        $sourceX = ($newWidth - $thumbWidth) / 2 / $ratio;
                        $sourceY = ($newHeight - $thumbHeight) / 2 / $ratio;
                        imagecopyresampled(
                            $thumbImage,       // ๋ชฉ์  ์ด๋ฏธ์ง (์๋ก์ด ์บ๋ฒ์ค)
                            $sourceImage,      // ์๋ณธ ์ด๋ฏธ์ง
                            0,                 // ๋ชฉ์  X ์ขํ
                            0,                 // ๋ชฉ์  Y ์ขํ
                            $sourceX,          // ์๋ณธ X ์ขํ
                            $sourceY,          // ์๋ณธ Y ์ขํ (ํฌ๋กญ์ ์ํ ๊ณ์ฐ)
                            $thumbWidth,       // ๋ชฉ์  ํญ
                            $thumbHeight,      // ๋ชฉ์  ๋์ด
                            $sourceWidth,      // ์๋ณธ ํญ
                            $sourceHeight      // ์๋ณธ ๋์ด
                        );
                        // ์ธ๋ค์ผ ์ ์ฅ
                        $thumbFileName = 'thumb_' . $fileNewName;
                        $thumbDestination = $thumbDir . $thumbFileName;
                        if ($fileExt == 'jpg' || $fileExt == 'jpeg') {
                            imagejpeg($thumbImage, $thumbDestination, 90); // 90์ ํ์ง (0-100)
                        } elseif ($fileExt == 'png') {
                            imagepng($thumbImage, $thumbDestination, 9); // 9๋ ์์ถ ๋ ๋ฒจ (0-9)
                        } elseif ($fileExt == 'gif') {
                            imagegif($thumbImage, $thumbDestination);
                        }
                        echo "์ธ๋ค์ผ์ด ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋์์ต๋๋ค: " . $thumbFileName . "<br>";
                        // ๋ฉ๋ชจ๋ฆฌ ํด์ 
                        imagedestroy($sourceImage);
                        imagedestroy($thumbImage);
                    } else {
                        echo "์ง์ํ์ง ์๋ ์ด๋ฏธ์ง ํ์์
๋๋ค.<br>";
                    }
                    // --- ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ ๋ ---
                } else {
                    echo "ํ์ผ ์
๋ก๋์ ์คํจํ์ต๋๋ค.<br>";
                }
            } else {
                echo "ํ์ผ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฝ๋๋ค (5MB ์ ํ).<br>";
            }
        } else {
            echo "ํ์ผ ์
๋ก๋ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค: " . $fileError . "<br>";
        }
    } else {
        echo "ํ์ฉ๋์ง ์๋ ํ์ผ ํ์ฅ์์
๋๋ค.<br>";
    }
} else {
    echo "ํ์ผ์ ์
๋ก๋ํด์ฃผ์ธ์.<br>";
}
?>
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="uploadFile">
    <button type="submit">์
๋ก๋</button>
</form>
4. ์ฝ๋ ์ค๋ช ๋ฐ ์ถ๊ฐ ๊ณ ๋ ค์ฌํญ
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋ฐ ์ธ๋ค์ผ ์์ฑ์ ์ํํฉ๋๋ค.
#ํ์ผ ์ ๋ก๋ ์ฒ๋ฆฌ:
$_FILES์ ์ญ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ก๋๋ ํ์ผ์ ์ ๋ณด๋ฅผ ์ป๊ณ , ์ง์ ๋ ๋๋ ํ ๋ฆฌ๋ก ํ์ผ์ ์ด๋์ํต๋๋ค.#์ด๋ฏธ์ง ํ์ ๊ฐ์ง:
pathinfo()์in_array()๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ก๋๋ ํ์ผ์ ํ์ฅ์๋ฅผ ํ์ธํ๊ณ , GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ง์ํ๋ ์ด๋ฏธ์ง ํ์์ธ์ง ํ๋ณํฉ๋๋ค.#์๋ณธ ์ด๋ฏธ์ง ๋ก๋:
imagecreatefromjpeg(),imagecreatefrompng(),imagecreatefromgif()์ค ์ ์ ํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํฉ๋๋ค.#์ธ๋ค์ผ ํฌ๊ธฐ ๋ฐ ๋น์จ ๊ณ์ฐ:
imagesx()์imagesy()๋ก ์๋ณธ ์ด๋ฏธ์ง์ ํญ๊ณผ ๋์ด๋ฅผ ๊ฐ์ ธ์จ ํ, ์ํ๋ ์ธ๋ค์ผ ํฌ๊ธฐ(thumbWidth,thumbHeight)์ ๋ง๊ฒ #๋น์จ์ ์ ์งํ๋ฉฐ ์๋ก์ด ํญ๊ณผ ๋์ด๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ธ๋ค์ผ ์์ญ์ ์ฑ์ฐ๋ฉด์ ์๋ณธ ๋น์จ์ ์ ์งํ๊ธฐ ์ํด #์ค์ ํฌ๋กญ ๋ฐฉ์์ ์ฌ์ฉํ๋๋กimagecopyresampled์ ์๋ณธ X/Y ์ขํ๋ฅผ ์กฐ์ ํ์ต๋๋ค.#์๋ก์ด ์ด๋ฏธ์ง ์บ๋ฒ์ค ์์ฑ:
imagecreatetruecolor()ํจ์๋ก ์ธ๋ค์ผ ํฌ๊ธฐ์ ๋น ์ด๋ฏธ์ง๋ฅผ ์์ฑํฉ๋๋ค.#ํฌ๋ช ๋ ์ ์ง: PNG๋ GIF์ ๊ฐ์ด ํฌ๋ช ๋๋ฅผ ์ง์ํ๋ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ,
imagealphablending(false)์imagesavealpha(true)๋ฅผ ์ค์ ํ์ฌ ํฌ๋ช ๋ฐฐ๊ฒฝ์ด ์์๋์ง ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.#์ด๋ฏธ์ง ๋ณต์ฌ ๋ฐ ๋ฆฌ์ํ๋ง:
imagecopyresampled()ํจ์๊ฐ ํต์ฌ์ ๋๋ค. ์ด ํจ์๋ ์๋ณธ ์ด๋ฏธ์ง์ ํฝ์ ์ ์๋ก์ด ์บ๋ฒ์ค์ ๋ณต์ฌํ๋ฉด์ ๋์์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ , ํฝ์  ๋ณด๊ฐ(interpolation)์ ํตํด ์ด๋ฏธ์ง ํ์ง์ ํฅ์์ํต๋๋ค.#์ธ๋ค์ผ ์ ์ฅ:
imagejpeg(),imagepng(),imagegif()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ค์ผ์thumbnails/๋๋ ํ ๋ฆฌ์ ์ ์ฅํฉ๋๋ค. JPEG์ ๊ฒฝ์ฐ ํ์ง์, PNG์ ๊ฒฝ์ฐ ์์ถ๋ฅ ์ ์ง์ ํ ์ ์์ต๋๋ค.#๋ฉ๋ชจ๋ฆฌ ํด์ :
imagedestroy()๋ฅผ ํตํด ์ฌ์ฉ๋ ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ๋ฐ๋์ ํด์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์งํด์ผ ํฉ๋๋ค.
์ถ๊ฐ ๊ณ ๋ ค์ฌํญ:
#๋ณด์: ํ์ผ ์ ๋ก๋ ์์๋ ๋ฐ๋์ ํ์ผ ํ์ฅ์, MIME ํ์ ๊ฒ์ฌ, ํ์ผ ํฌ๊ธฐ ์ ํ ๋ฑ #๋ณด์ ๊ฒ์ฆ์ ์ฒ ์ ํ ํด์ผ ํฉ๋๋ค. ์ ์ฑ ํ์ผ ์ ๋ก๋๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ์ ๋๋ค.
#์ค๋ฅ ์ฒ๋ฆฌ: ํ์ผ ์ ๋ก๋ ๋ฐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๊ณผ์ ์์ ๋ฐ์ํ ์ ์๋ ๋ค์ํ #์ค๋ฅ์ ๋ํ ์์ธ ์ฒ๋ฆฌ๋ฅผ ๊ฐํํด์ผ ํฉ๋๋ค.
#๋์ฉ๋ ์ด๋ฏธ์ง ์ฒ๋ฆฌ: ๋งค์ฐ ํฐ ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ํ์์ ๋ฐ๋ผ PHP์
memory_limit์ค์ ์ ์กฐ์ ํ๊ฑฐ๋, ๋ ํจ์จ์ ์ธ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: ImageMagick)๋ฅผ ๊ฒํ ํ ์ ์์ต๋๋ค.#๋น๋๊ธฐ ์ฒ๋ฆฌ: ๋๋์ ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฐ ๋ฆฌ์ฌ์ด์ง์ด ํ์ํ ๊ฒฝ์ฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ฅผ #๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
์ด๋ฒ ์ฃผ์ฐจ์์๋ #GD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ ์ด๋ฏธ์ง #๋ฆฌ์ฌ์ด์ง ๋ฐ #์ธ๋ค์ผ ์์ฑ์ ๊ธฐ์ด๋ฅผ ๋ค๋ค๋ดค์ต๋๋ค. ์ด ๊ธฐ์ ์ ์ค์  ์น ์๋น์ค์์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ํต์ฌ์ ์ธ ์ญํ ์ ํ ๊ฑฐ์์.