<?php

/*
ÀÌ¸§ : get_image_resource_from_file

¿ëµµ : ÀÌ¹ÌÁöÆÄÀÏ(gif, jpg, png ¸¸ Áö¿ø)·ÎºÎÅÍ ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ »ý¼ºÇÑ´Ù

¼º°ø½Ã ¸®ÅÏ°ª : ÀÌ¹ÌÁö ¸®¼Ò½º id ¿Í getimagesize ·Î ¹Þ¾Æ¿Â ÀÌ¹ÌÁö Á¤º¸¸¦ ¹è¿­·Î ¹ÝÈ¯
==> Array(0=>image resource, 1=>image width, 2=>image height, 3=>image type, 4=>image attribute);

½ÇÆÐ½Ã ¸®ÅÏ°ª : ºó ¹è¿­ ¹ÝÈ¯
==> Array()

ÀÎÀÚ :
==> $path_file : ÀÌ¹ÌÁöÀÇ Àý´ë°æ·Î ¶Ç´Â »ó´ë°æ·Î
*/

function get_image_resource_from_file ($path_file){

    if (!is_file($path_file)) {//ÆÄÀÏÀÌ ¾Æ´Ï¶ó¸é

        $GLOBALS['errormsg'] = $path_file . 'Àº ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.';

        return Array();
    }

    $size = @getimagesize($path_file);
    if (empty($size[2])) {//ÀÌ¹ÌÁö Å¸ÀÔÀÌ ¾ø´Ù¸é

        $GLOBALS['errormsg'] = $path_file . 'Àº ÀÌ¹ÌÁö ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.';

        return Array();
    }

    if ($size[2] != 1 && $size[2] != 2 && $size[2] != 3) {//Áö¿øÇÏ´Â ÀÌ¹ÌÁö Å¸ÀÔÀÌ ¾Æ´Ï¶ó¸é

        $GLOBALS['errormsg'] = $path_file . 'Àº gif ³ª jpg, png ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.';

        return Array();
    }

    switch($size[2]){//image type¿¡ µû¶ó ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ »ý¼ºÇÑ´Ù.

        case 1 : //gif

            $im = @imagecreatefromgif($path_file);
            break;

        case 2 : //jpg

            $im = @imagecreatefromjpeg($path_file);
            break;

        case 3 : //png

            $im = @imagecreatefrompng($path_file);
            break;
    }

    if ($im === false) {//ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ °¡Á®¿À±â¿¡ ½ÇÆÐÇÏ¿´´Ù¸é

        $GLOBALS['errormsg'] = $path_file . ' ¿¡¼­ ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ °¡Á®¿À´Â °Í¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.';

        return Array();
    }
    else {//ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ °¡Á®¿À±â¿¡ ¼º°øÇÏ¿´´Ù¸é

        $return = $size;
        $return[0] = $im;
        $return[1] = $size[0];//³Êºñ
        $return[2] = $size[1];//³ôÀÌ
        $return[3] = $size[2];//ÀÌ¹ÌÁöÅ¸ÀÔ
        $return[4] = $size[3];//ÀÌ¹ÌÁö attribute

        return $return;
    }
}



/*
ÀÌ¸§ : save_image_from_resource

¿ëµµ : image resouce ¸¦ °¡Áö°í ÆÄÀÏ·Î ÀúÀå

¼º°ø½Ã ¸®ÅÏ°ª : true

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $im : ÀÌ¹ÌÁö ¸®¼Ò½º id
==> $path_save_file : ÀúÀåµÉ ÆÄÀÏÀÇ Àý´ë °æ·Î ¶Ç´Â »ó´ë°æ·Î
==> $quality : ÀúÀåµÇ´Â ÆÄÀÏÀÇ ÁúÀ» °áÁ¤
                            ==> 100 ÀÌÇÏÀÇ Á¤¼ö·Î ÁöÁ¤, ³ôÀ»¼ö·Ï ÁúÀÌ ³ôÀ½
                            ==> »ý·«ÇÏ¸é ÀÚµ¿À¸·Î ±âº»°ªÀº 70
==> $save_force : µ¿ÀÏ °æ·Î¿¡ ÀÌ¹Ì ÆÄÀÏÀÌ Á¸ÀçÇÒ¶§
                                         ==> 0 ÀÌ¸é ÀúÀåÇÏÁö ¾Ê°í false ¹ÝÈ¯
                                         ==> 1 ÀÌ¸é ÀúÀåÇÏÁö ¾Ê°í true ¹ÝÈ¯
                                         ==> 2 ÀÌ¸é ±âÁ¸ °ÍÀº Áö¿ì°í »õ·Î ÀúÀå
                                         ==> »ý·«ÇÏ¸é ÀÚµ¿À¸·Î ±âº»°ªÀº 0

Âü°í :
==> gif ÀÌ¹ÌÁö´Â $quality ÀÇ ¿µÇâÀ» ¹ÞÁö ¾ÊÀ½
*/

function save_image_from_resource ($im, $path_save_file, $quality=70, $save_force=0){

    $path_save_dir = dirname($path_save_file);//ÀúÀå ÆÄÀÏ °æ·Î¿¡¼­ »óÀ§ µð·ºÅä¸® °æ·Î¸¦ °¡Á®¿È
    if (!is_dir($path_save_dir)) {//»óÀ§µð·ºÅä¸®°¡ µð·ºÅä¸®°¡ ¾Æ´Ï¶ó¸é

        $GLOBALS['errormsg'] = $path_save_dir . 'Àº µð·ºÅä¸®°¡ ¾Æ´Õ´Ï´Ù.';

        return false;
    }

    if (!is_writable($path_save_dir)){//ÇØ´ç µð·ºÅä¸®¿¡ ÆÄÀÏÀ» ÀúÀåÇÒ ±ÇÇÑÀÌ ¾ø´Ù¸é

        $GLOBALS['errormsg'] = $path_save_dir . '¿¡ ÀÌ¹ÌÁö¸¦ ÀúÀåÇÒ ±ÇÇÑÀÌ ¾ø½À´Ï´Ù.';

        return false;
    }

    if (is_dir($path_save_file)) {//°°Àº ÀÌ¸§ÀÇ µð·ºÅä¸®°¡ Á¸ÀçÇÏ¸é

        $GLOBALS['errormsg'] = $path_save_file . 'Àº ÀÌ¹Ì °°Àº ÀÌ¸§ÀÇ µð·ºÅä¸®°¡ Á¸ÀçÇÕ´Ï´Ù.';

        return false;
    }

    if (is_file($path_save_file)){//°°Àº ÀÌ¸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇÏ¸é

        if ($save_force == 1) {//»õ·Î ÀúÀåÇÏÁö ¾Ê°í true ¹ÝÈ¯

            return true;
        }
        else if ($save_force == 2){//±âÁ¸ ÆÄÀÏÀº »èÁ¦

            $result_unlink = @unlink($path_save_file);
            if ($result_unlink === false) {//±âÁ¸ ÀÌ¹ÌÁö »èÁ¦¿¡ ½ÇÆÐ

                $GLOBALS['errormsg'] = '±âÁ¸¿¡ Á¸ÀçÇÏ´ø ' . $path_save_file . 'ÀÇ »èÁ¦¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.';

                return false;
            }
        }
        else {//0 ÀÌ°Å³ª Á¤ÇØÁöÁö ¾ÊÀº °ªÀÏ¶§ false¸¦ ¹ÝÈ¯

            $GLOBALS['errormsg'] = $path_save_file . 'Àº ÀÌ¹Ì °°Àº ÀÌ¸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇÕ´Ï´Ù.';

            return false;
        }
    }

    //ÆÄÀÏ¸í¿¡¼­ ¸¶Áö¸· . À» ±âÁØÀ¸·Î È®ÀåÀÚ¸¦ °¡Á®¿Í¼­ ¼Ò¹®ÀÚ·Î º¯È¯
    $extension = strtolower(substr($path_save_file, strrpos($path_save_file, '.') + 1));

    switch($extension){//È®ÀåÀÚ¿¡ µû¶ó ÀÌ¹ÌÁö ÀúÀå Ã³¸®

        case 'gif' :

            $result_save = @imagegif($im, $path_save_file);
            break;

        case 'jpg' :

        case 'jpeg' :

            $result_save = @imagejpeg($im, $path_save_file, $quality);
            break;

        default : //È®ÀåÀÚ png ¶Ç´Â È®ÀåÀÚ°¡ ¾ø´Â °æ¿ì, Á¤ÀÇµÇÁö ¾Ê´Â È®ÀåÀÚÀÎ °æ¿ì´Â ¸ðµÎ png·Î ÀúÀå

            $result_save = @imagepng($im, $path_save_file);
    }

    if ($result_save === false) {//ÀÌ¹ÌÁö ÀúÀå¿¡ ½ÇÆÐ

        $GLOBALS['errormsg'] = $path_save_file . 'ÀÇ ÀúÀå¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.';

        return false;
    }
    else {//ÀÌ¹ÌÁö ÀúÀå¿¡ ¼º°ø

        return true;
    }
}



/*
ÀÌ¸§ : get_size_by_rule

¿ëµµ : Å«ÀÌ¹ÌÁöÀÇ ³Êºñ¿Í ³ôÀÌ¸¦ °¡Áö°í Á¤ºñÀ²ÀÇ ÀÛÀº ÀÌ¹ÌÁö ³Êºñ ³ª ³ôÀÌ¸¦ ±¸ÇÔ

¼º°ø½Ã ¸®ÅÏ°ª : 0º¸´Ù Å« Á¤¼ö°ª

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $src_w : Å«ÀÌ¹ÌÁöÀÇ ³Êºñ, 0º¸´Ù Å« Á¤¼ö¸¸ °¡´É
==> $src_h : Å«ÀÌ¹ÌÁöÀÇ ³ôÀÌ, 0º¸´Ù Å« Á¤¼ö¸¸ °¡´É
==> $dst_size : ÀÛÀº ÀÌ¹ÌÁöÀÇ Á¤ÇØÁø ³Êºñ ³ª ³ôÀÌ, ³Êºñ ÀÏ °æ¿ì ³ôÀÌ ¹ÝÈ¯, ³ôÀÌ ÀÏ °æ¿ì ³Êºñ ¹ÝÈ¯
==> $rule : $dst_size ÀÇ °ªÀÌ ³Êºñ ÀÎÁö ³ôÀÌÀÎÁö ÁöÁ¤
                    ==> °ªÀ¸·Î´Â width, height °¡ ¿Ã¼ö ÀÖ´Ù.
                    ==> »ý·«ÇÏ°Å³ª height °¡ ¾Æ´Ï¸é ¸ðµÎ width·Î ÀÎ½Ä
*/

function get_size_by_rule($src_w, $src_h, $dst_size, $rule='width'){

    //Á¤¼öÇüÀÌ ¾Æ´Ï¶ó¸é Á¤¼öÇüÀ¸·Î °­Á¦ Çüº¯È¯
    if (!is_int($src_w)) settype($src_w, 'int');
    if (!is_int($src_h)) settype($src_h, 'int');
    if (!is_int($dst_size)) settype($dst_size, 'int');

    if ($src_w < 1 || $src_h < 1){//¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª¶óµµ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($src_w, $src_h)";

        return false;
    }

    if ($dst_size < 1){//¸®»çÀÌÁî µÉ »çÀÌÁî°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¸®»çÀÌÁîµÉ »çÀÌÁî°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_size)";

        return false;
    }

    if ($rule != 'height') {//±âÁØ°ªÀÌ ³ÊºñÀÏ °æ¿ì, °ªÀÌ height °¡ ¾Æ´Ï¸é ÀüºÎ width ·Î ÆÇ´Ü

        return ceil($dst_size / $src_w * $src_h);
    }
    else {//±âÁØ°ªÀÌ ³ôÀÌÀÏ °æ¿ì

        return ceil($dst_size / $src_h * $src_w);
    }
}



/*
ÀÌ¸§ : get_bigsize_by_rule

¿ëµµ : ÀÛÀº ÀÌ¹ÌÁöÀÇ ³Êºñ¿Í ³ôÀÌ¸¦ °¡Áö°í Á¤ºñÀ²ÀÇ Å« ÀÌ¹ÌÁö ³Êºñ ³ª ³ôÀÌ¸¦ ±¸ÇÔ

¼º°ø½Ã ¸®ÅÏ°ª : 0º¸´Ù Å« Á¤¼ö°ª

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $dst_w : ÀÛÀºÀÌ¹ÌÁöÀÇ ³Êºñ, 0º¸´Ù Å« Á¤¼ö¸¸ °¡´É
==> $dst_h : ÀÛÀºÀÌ¹ÌÁöÀÇ ³ôÀÌ, 0º¸´Ù Å« Á¤¼ö¸¸ °¡´É
==> $src_size : Å« ÀÌ¹ÌÁöÀÇ Á¤ÇØÁø ³Êºñ ³ª ³ôÀÌ, ³Êºñ ÀÏ °æ¿ì ³ôÀÌ ¹ÝÈ¯, ³ôÀÌ ÀÏ °æ¿ì ³Êºñ ¹ÝÈ¯
==> $rule : $src_size ÀÇ °ªÀÌ ³Êºñ ÀÎÁö ³ôÀÌÀÎÁö ÁöÁ¤
                    ==> °ªÀ¸·Î´Â width, height °¡ ¿Ã¼ö ÀÖ´Ù.
                    ==> »ý·«ÇÏ°Å³ª height °¡ ¾Æ´Ï¸é ¸ðµÎ width·Î ÀÎ½Ä
*/

function get_bigsize_by_rule($dst_w, $dst_h, $src_size, $rule='width'){

    //Á¤¼öÇüÀÌ ¾Æ´Ï¶ó¸é Á¤¼öÇüÀ¸·Î °­Á¦ Çüº¯È¯
    if (!is_int($dst_w)) settype($dst_w, 'int');
    if (!is_int($dst_h)) settype($dst_h, 'int');
    if (!is_int($src_size)) settype($src_size, 'int');

    if ($dst_w < 1 || $dst_h < 1){//½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª¶óµµ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_w, $dst_h)";

        return false;
    }

    if ($src_size < 1){//¿øº»ÀÇ »çÀÌÁî°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¿øº»ÀÇ »çÀÌÁî°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($src_size)";

        return false;
    }

    if ($rule != 'height') {//±âÁØ°ªÀÌ ³ÊºñÀÏ °æ¿ì, °ªÀÌ height °¡ ¾Æ´Ï¸é ÀüºÎ width ·Î ÆÇ´Ü

        return ceil($src_size / $dst_w * $dst_h);
    }
    else {//±âÁØ°ªÀÌ ³ôÀÌÀÏ °æ¿ì

        return ceil($src_size / $dst_h * $dst_w);
    }
}



/*
ÀÌ¸§ : get_image_resize

¿ëµµ : ¿øº»ÀÇ ¸®¼Ò½º¸¦ °¡Áö°í ÁÖ¾îÁø Á¶°ÇÀ¸·Î ¸®»çÀÌÁî Ã³¸®ÇÑ ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ »ý¼º

¼º°ø½Ã ¸®ÅÏ°ª : ½æ³×ÀÏ ¸®¼Ò½º id

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $src : ¿øº»ÀÇ ¸®¼Ò½º id
==> $src_w : ¿øº»ÀÇ ³Êºñ
==> $src_h : ¿øº»ÀÇ ³ôÀÌ
==> $dst_w : »ý¼ºÇÒ ½æ³×ÀÏÀÇ ³Êºñ, 0 ÀÌ»óÀÇ Á¤¼ö
==> $dst_h : »ý¼ºÇÒ ½æ³×ÀÏÀÇ ³ôÀÌ, 0 ÀÌ»óÀÇ Á¤¼ö
                         ==> »ý·« °¡´ÉÇÏ¸ç »ý·«½Ã¿¡´Â ÀÚµ¿À¸·Î 0À¸·Î °ªÀÌ µé¾î°¨

Âü°í :
==> $dst_w ¿Í $dst_h ¸ðµÎ °ªÀÌ 0ÀÌ µÉ¼ö ¾øÀ½
==> µÑ´Ù 0º¸´Ù Å¬ °æ¿ì, °­Á¦ ¸®»çÀÌÁîÇÏ¿© ½æ³×ÀÏ ¸®¼Ò½º »ý¼º
==> µÑÁß ÇÏ³ª°¡ 0 ÀÌ¸é, 0ÀÌ ¾Æ´Ñ ÂÊÀ» ±âÁØÀ¸·Î Á¤ºñÀ²·Î ¸®»çÀÌÁî ÇÏ¿© ½æ³×ÀÏ »ý¼º
*/

function get_image_resize($src, $src_w, $src_h, $dst_w, $dst_h=0){

    if (empty($src))    {//¿øº»ÀÇ ¸®¼Ò½º id °¡ ºó°ªÀÏ °æ¿ì

        $GLOBALS['errormsg'] = '¿øº» ¸®¼Ò½º°¡ ¾ø½À´Ï´Ù.';

        return false;
    }

    //Á¤¼öÇüÀÌ ¾Æ´Ï¶ó¸é Á¤¼öÇüÀ¸·Î °­Á¦ Çüº¯È¯
    if (!is_int($src_w)) settype($src_w, 'int');
    if (!is_int($src_h)) settype($src_h, 'int');
    if (!is_int($dst_w)) settype($dst_w, 'int');
    if (!is_int($dst_h)) settype($dst_h, 'int');

    if ($src_w < 1 || $src_h < 1){//¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª¶óµµ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($src_w, $src_h)";

        return false;
    }

    if (empty($dst_w) && empty($dst_h)) {//½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ µÑ´Ù ¾øÀ» °æ¿ì

        $GLOBALS['errormsg'] = '½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ´Â µÑÁß¿¡ ÇÏ³ª´Â ¹ÝµíÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.';

        return false;
    }

    if (!empty($dst_w) && $dst_w < 1){//½æ³×ÀÏÀÇ ³Êºñ°¡ Á¸ÀçÇÏ´Âµ¥ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "½æ³×ÀÏÀÇ ³Êºñ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_w)";

        return false;
    }

    if (!empty($dst_h) && $dst_h < 1){//½æ³×ÀÏÀÇ ³ôÀÌ°¡ Á¸ÀçÇÏ´Âµ¥ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "½æ³×ÀÏÀÇ ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_h)";

        return false;
    }


    //½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª°¡ ¾ø´Â °æ¿ì¿¡´Â Á¤ºñÀ²À» ÀÇ¹ÌÇÏ¸ç, ºñÀ²µ¥·Î ³Êºñ¿Í ³ôÀÌ¸¦ °áÁ¤ÇÑ´Ù.
    if (empty($dst_w) || empty($dst_h)) {

        if (empty($dst_h)) $dst_h = get_size_by_rule($src_w, $src_h, $dst_w, 'width');
        else $dst_w = get_size_by_rule($src_w, $src_h, $dst_h, 'height');
    }


    //$dst_w , $dst_h Å©±âÀÇ ½æ³×ÀÏ ¸®¼Ò½º¸¦ »ý¼ºÇÑ´Ù.
    $dst = @imagecreatetruecolor ($dst_w , $dst_h);
    if ($dst === false) {

        $GLOBALS['errormsg'] = "$dst_w , $dst_h Å©±âÀÇ ½æ³×ÀÏ ¸®¼Ò½º¸¦ »ý¼ºÇÏÁö ¸øÇß½À´Ï´Ù.";

        return false;
    }


    //¸®»çÀÌÁî Ã³¸®
    $result_resize = imagecopyresampled ($dst , $src , 0 , 0 , 0 , 0 , $dst_w , $dst_h , $src_w , $src_h );
    if ($result_resize === false) {

        $GLOBALS['errormsg'] = "$dst_w , $dst_h Å©±â·Î ¸®»çÀÌÁî¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.";

        return false;
    }

    return $dst;
}



/*
ÀÌ¸§ : get_image_cropresize

¿ëµµ : ¿øº»ÀÇ ¸®¼Ò½º¸¦ °¡Áö°í ÁÖ¾îÁø Á¶°ÇÀ¸·Î Å©·Ó ÈÄ ¸®»çÀÌÁî Ã³¸®ÇÑ ÀÌ¹ÌÁö ¸®¼Ò½º¸¦ »ý¼º

¼º°ø½Ã ¸®ÅÏ°ª : ½æ³×ÀÏ ¸®¼Ò½º id

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $src : ¿øº»ÀÇ ¸®¼Ò½º id
==> $src_w : ¿øº»ÀÇ ³Êºñ
==> $src_h : ¿øº»ÀÇ ³ôÀÌ
==> $dst_w : »ý¼ºÇÒ ½æ³×ÀÏÀÇ ³Êºñ, 0 ÀÌ»óÀÇ Á¤¼ö
==> $dst_h : »ý¼ºÇÒ ½æ³×ÀÏÀÇ ³ôÀÌ, 0 ÀÌ»óÀÇ Á¤¼ö
                         ==> »ý·« °¡´ÉÇÏ¸ç »ý·«½Ã¿¡´Â ÀÚµ¿À¸·Î 0À¸·Î °ªÀÌ µé¾î°¨
==> $pos_width : ³Êºñ¸¦ ±âÁØÀ¸·Î Å©·ÓÇÒ¶§ ¾î´ÀºÎºÐÀ» Å©·ÓÇÒÁö ÁöÁ¤
                                     ==> 1 ÀÏ°æ¿ì¿¡´Â ¿ÞÂÊÀ» ±âÁØÀ¸·Î Å©·Ó
                                     ==> 2 ÀÏ°æ¿ì¿¡´Â Áß¾ÓÀ» ±âÁØÀ¸·Î Å©·Ó
                                     ==> 3 ÀÏ°æ¿ì¿¡´Â ¿À¸¥ÂÊÀ» ±âÁØÀ¸·Î Å©·Ó
                                     ==> »ý·«°¡´ÉÇÏ¸ç »ý·«½Ã¿¡´Â ÀÚµ¿À¸·Î 2 ·Î °ªÀÌ µé¾î°¨
==> $pos_height : ³ôÀÌ¸¦ ±âÁØÀ¸·Î Å©·ÓÇÒ¶§ ¾î´ÀºÎºÐÀ» Å©·ÓÇÒÁö ÁöÁ¤
                                     ==> 1 ÀÏ°æ¿ì¿¡´Â »ó´ÜÀ» ±âÁØÀ¸·Î Å©·Ó
                                     ==> 2 ÀÏ°æ¿ì¿¡´Â °¡¿îµ¥¸¦ ±âÁØÀ¸·Î Å©·Ó
                                     ==> 3 ÀÏ°æ¿ì¿¡´Â ÇÏ´ÜÀ» ±âÁØÀ¸·Î Å©·Ó
                                     ==> »ý·«°¡´ÉÇÏ¸ç »ý·«½Ã¿¡´Â ÀÚµ¿À¸·Î 2 ·Î °ªÀÌ µé¾î°¨

Âü°í :
==> $dst_w ¿Í $dst_h ¸ðµÎ °ªÀÌ 0ÀÌ µÉ¼ö ¾øÀ½
==> µÑ´Ù 0º¸´Ù Å¬ °æ¿ì, °­Á¦ ¸®»çÀÌÁîÇÏ¿© ½æ³×ÀÏ ¸®¼Ò½º »ý¼º
==> µÑÁß ÇÏ³ª°¡ 0 ÀÌ¸é, 0ÀÌ ¾Æ´Ñ ÂÊÀ» ±âÁØÀ¸·Î Á¤ºñÀ²·Î ¸®»çÀÌÁî ÇÏ¿© ½æ³×ÀÏ »ý¼º
*/

function get_image_cropresize($src, $src_w, $src_h, $dst_w, $dst_h=0, $pos_width=2, $pos_height=2){

    if (empty($src))    {//¿øº»ÀÇ ¸®¼Ò½º id °¡ ºó°ªÀÏ °æ¿ì

        $GLOBALS['errormsg'] = '¿øº» ¸®¼Ò½º°¡ ¾ø½À´Ï´Ù.';

        return false;
    }

    //Á¤¼öÇüÀÌ ¾Æ´Ï¶ó¸é Á¤¼öÇüÀ¸·Î °­Á¦ Çüº¯È¯
    if (!is_int($src_w)) settype($src_w, 'int');
    if (!is_int($src_h)) settype($src_h, 'int');
    if (!is_int($dst_w)) settype($dst_w, 'int');
    if (!is_int($dst_h)) settype($dst_h, 'int');

    if ($src_w < 1 || $src_h < 1){//¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª¶óµµ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($src_w, $src_h)";

        return false;
    }

    if (empty($dst_w) && empty($dst_h)) {//½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ µÑ´Ù ¾øÀ» °æ¿ì

        $GLOBALS['errormsg'] = '½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ´Â µÑÁß¿¡ ÇÏ³ª´Â ¹ÝµíÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù.';

        return false;
    }

    if (!empty($dst_w) && $dst_w < 1){//½æ³×ÀÏÀÇ ³Êºñ°¡ Á¸ÀçÇÏ´Âµ¥ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "½æ³×ÀÏÀÇ ³Êºñ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_w)";

        return false;
    }

    if (!empty($dst_h) && $dst_h < 1){//½æ³×ÀÏÀÇ ³ôÀÌ°¡ Á¸ÀçÇÏ´Âµ¥ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "½æ³×ÀÏÀÇ ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($dst_h)";

        return false;
    }


    //½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª°¡ ¾ø´Â °æ¿ì¿¡´Â Á¤ºñÀ²À» ÀÇ¹ÌÇÏ¸ç, ºñÀ²µ¥·Î ³Êºñ¿Í ³ôÀÌ¸¦ °áÁ¤ÇÑ´Ù.
    if (empty($dst_w) || empty($dst_h)) {

        if (empty($dst_h)) $dst_h = get_size_by_rule($src_w, $src_h, $dst_w, 'width');
        else $dst_w = get_size_by_rule($src_w, $src_h, $dst_h, 'height');
    }


    //$dst_w , $dst_h Å©±âÀÇ ½æ³×ÀÏ ¸®¼Ò½º¸¦ »ý¼ºÇÑ´Ù.
    $dst = @imagecreatetruecolor ($dst_w , $dst_h);
    if ($dst === false) {

        $GLOBALS['errormsg'] = "$dst_w , $dst_h Å©±âÀÇ ½æ³×ÀÏ ¸®¼Ò½º¸¦ »ý¼ºÇÏÁö ¸øÇß½À´Ï´Ù.";

        return false;
    }


    //½æ³×ÀÏÀÇ ³Êºñ¸¦ ±âÁØÀ¸·Î Á¤ºñÀ²ÀÇ ½æ³×ÀÏÀÇ ³ôÀÌ¸¦ ±¸ÇÑ´Ù.
    $s_w = $dst_w;
    $s_h = get_size_by_rule($src_w, $src_h, $s_w, 'width');


    //±âº»°ª
    $src_x = 0;
    $src_y = 0;
    $src_nw = $src_w;
    $src_nh = $src_h;


    if ($dst_h != $s_h) {//³ôÀÌ°¡ ´Ù¸§, Áï, Å©·ÓÀ» ÇØ¾ß ÇÑ´Ù´Â ¶æ

        if ($dst_h < $s_h) {//ÁöÁ¤µÈ ³ôÀÌ°¡ Á¤ºñÀ² ³ôÀÌ º¸´Ù ÀÛÀ»°æ¿ì, ³ôÀÌ¸¦ ±âÁØÀ¸·Î $pos_height ·Î Å©·Ó

            //½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ¸¦ °¡Áö°í Á¤ºñÀ²ÀÇ Å«ÀÌ¹ÌÁöÀÇ ³ôÀÌ¸¦ ±¸ÇÑ´Ù.
            $src_nh = get_bigsize_by_rule($dst_w, $dst_h, $src_w, 'width');

            $src_x = 0;

            if ($pos_height == 1) $src_y = 0;//»ó´Ü ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ
            else if ($pos_height == 2) $src_y = ceil(($src_h - $src_nh) / 2);//°¡¿îµ¥ ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ
            else $src_y = $src_h - $src_nh;//ÇÏ´Ü ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ
        }
        else {//ÁöÁ¤µÈ ³ôÀÌ°¡ Á¤ºñÀ² ³ôÀÌ º¸´Ù Å«°æ¿ì, ³Êºñ¸¦ ±âÁØÀ¸·Î $pos_width Å©·Ó

            ////½æ³×ÀÏÀÇ ³Êºñ¿Í ³ôÀÌ¸¦ °¡Áö°í Á¤ºñÀ²ÀÇ ¿øº» ³Êºñ¸¦ ±¸ÇÑ´Ù.
            $src_nw = get_bigsize_by_rule($dst_w, $dst_h, $src_h, 'height');

            if ($pos_width == 1) $src_x = 0;//¿ÞÂÊ ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ
            else if ($pos_width == 2) $src_x = ceil(($src_w - $src_nw) / 2);//Áß¾Ó ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ
            else $src_x = $src_w - $src_nw;//¿À¸¥ÂÊ ±âÁØÁ¡ yÁÂÇ¥ ±¸ÇÔ

            $src_y = 0;
        }
    }

    $result_resize = imagecopyresampled ($dst , $src , 0 , 0 , $src_x , $src_y , $dst_w , $dst_h , $src_nw , $src_nh );
    if ($result_resize === false) {

        $GLOBALS['errormsg'] = "$dst_w , $dst_h Å©±â·Î Å©·Ó ¹× ¸®»çÀÌÁî¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.";

        return false;
    }

    return $dst;
}



/*
ÀÌ¸§ : proc_watermark

¿ëµµ : ¿øº»ÀÇ ¸®¼Ò½º¸¦ °¡Áö°í ¿öÅÍ¸¶Å© ÀÌ¹ÌÁö¸¦ ÁÖ¾îÁø Á¶°Ç¿¡ µû¶ó Âï´Â´Ù.

¼º°ø½Ã ¸®ÅÏ°ª : true

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $src : ¿øº»ÀÇ ¸®¼Ò½º id
==> $src_w : ¿øº»ÀÇ ³Êºñ
==> $src_h : ¿øº»ÀÇ ³ôÀÌ
==> $path_mark_file : ¿öÅÍ¸¶Å©·Î »ç¿ëµÉ ÀÌ¹ÌÁöÆÄÀÏÀÇ ÀüÃ¼°æ·Î ¶Ç´Â »ó´ë°æ·Î
==> $pos : ¿öÅÍ¸¶Å©¸¦ ÂïÀ» Æ÷Áö¼ÇÀ» ¼ýÀÚ·Î ÁöÁ¤
                    ==> 1 ÀÏ°æ¿ì¿¡´Â »ó´Ü ¿ÞÂÊ¿¡ ÇÑ¹ø¸¸
                    ==> 2 ÀÏ°æ¿ì¿¡´Â »ó´Ü ¿À¸¥ÂÊ¿¡ ÇÑ¹ø¸¸
                    ==> 3 ÀÏ°æ¿ì¿¡´Â ÇÏ´Ü ¿ÞÂÊ¿¡ ÇÑ¹ø¸¸
                    ==> 4 ÀÏ°æ¿ì¿¡´Â ÇÏ´Ü ¿À¸¥ÂÊ¿¡ ÇÑ¹ø¸¸
                    ==> 5 ÀÏ °æ¿ì¿¡´Â Áß¾Ó¿¡ ÇÑ¹ø¸¸
                    ==> 10 ÀÏ °æ¿ì¿¡´Â ÀüÃ¼¸¦ ¹Ýº¹ÇØ¼­
                    ==> ±× ¿ÜÀÇ °ªÀº 4·Î Ã³¸®
==> $sharpness : ¿öÅÍ¸¶Å©ÀÇ ¼±¸íµµ, 0ºÎÅÍ 100 ±îÁöÀÇ Á¤¼ö¸¸ °¡´É
                                        ==> 100 ÀÏ °æ¿ì¿¡´Â Åõ¸íÀÌ¹ÌÁö¸¦ »ç¿ëÇÏ´Â°ÍÀ¸·Î °£ÁÖ, Åõ¸íÀÌ¹ÌÁö·Î ¿öÅÍ¸¶Å© Ã³¸®
==> $padding : ¿öÅÍ¸¶Å© »çÀÌÀÇ °£°Ý, »ý·«°¡´ÉÇÏ¸ç »ý·«½Ã ÀÚµ¿À¸·Î 0 ·Î °ªÀÌ µé¾î°¨
*/

function proc_watermark($src, $src_w, $src_h, $path_mark_file, $pos, $sharpness, $padding=0){

    if (empty($src))    {//¿øº»ÀÇ ¸®¼Ò½º id °¡ ºó°ªÀÏ °æ¿ì

        $GLOBALS['errormsg'] = '¿øº» ¸®¼Ò½º°¡ ¾ø½À´Ï´Ù.';

        return false;
    }



    //Á¤¼öÇüÀÌ ¾Æ´Ï¶ó¸é Á¤¼öÇüÀ¸·Î °­Á¦ Çüº¯È¯
    if (!is_int($src_w)) settype($src_w, 'int');
    if (!is_int($src_h)) settype($src_h, 'int');
    if (!is_int($sharpness)) settype($sharpness, 'int');
    if (!is_int($padding)) settype($padding, 'int');



    if ($src_w < 1 || $src_h < 1){//¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ µÑÁß¿¡ ÇÏ³ª¶óµµ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Ò°æ¿ì

        $GLOBALS['errormsg'] = "¿øº»ÀÇ ³Êºñ¿Í ³ôÀÌ°¡ 0º¸´Ù Å« Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù. ($src_w, $src_h)";

        return false;
    }



    if (empty($path_mark_file)) {//¿öÅÍ¸¶Å© ÀÌ¹ÌÁö °æ·Î°ªÀÌ ¾ø´Ù¸é

        $GLOBALS['errormsg'] = '¿öÅÍ¸¶Å© ÀÌ¹ÌÁö°æ·Î°ªÀÌ ¾ø½À´Ï´Ù.';

        return false;
    }

    list($mark, $mark_w, $mark_h) = get_image_resource_from_file ($path_mark_file);

    if (empty($mark)) return false;//¿¡·¯ ¸Þ½ÃÁö ÀÛ¼ºÀº get_image_resource_from_file ³»ºÎ¿¡¼­ ÇÔ



    if ($src_w < $mark_w + (2 * $padding)) {//¿øº»³Êºñ°¡ ¿öÅÍ¸¶Å© ÀÌ¹ÌÁö ³Êºñº¸´Ù ÀÛÀ¸¸é ¿öÅÍ¸¶Å© Ã³¸® ¾ÈÇÔ, return true;

        return true;
    }

    if ($src_h < $mark_h + (2 * $padding)) {//¿øº»³ôÀÌ°¡ ¿öÅÍ¸¶Å© ÀÌ¹ÌÁö ³ôÀÌº¸´Ù ÀÛÀ¸¸é ¿öÅÍ¸¶Å© Ã³¸® ¾ÈÇÔ, return true;

        return true;
    }



    if ($sharpness < 0 || $sharpness > 100) $sharpness = 30;//$sharpness °¡ ÁöÁ¤µÈ ¹üÀ§ ÀÌ»óÀÇ ¼ýÀÚ¶ó¸é 30À¸·Î °­Á¦ Àç¼³Á¤

    if ($padding < 0 || $padding > $mark_w || $padding > $mark_h) $padding = 10;//$paddingÀÌ 0º¸´Ù ÀÛ°Å³ª ¿öÅÍ¸¶Å©ÀÇ ³Êºñ³ª ³ôÀÌº¸´Ù Å©¸é 10À¸·Î °­Á¦ Àç¼³Á¤



    if ($pos == 10) {//¿öÅÍ¸¶Å© ÀüÃ¼·Î ÂïÀ» °æ¿ìÀÇ Ã³¸®

        $w_max = $src_w - $padding;
        $h_max = $src_h - $padding;

        //x ÃàÀ¸·Î ¿öÅÍ¸¶Å©¸¦ ¸î¹ø ÂïÀ» °ÍÀÎÁö °è»ê, ÆÐµùÀ» ´õÇØ¼­ ³ª´®
        $x_max = ceil($w_max / ($mark_w + $padding));

        //y ÃàÀ¸·Î ¿öÅÍ¸¶Å©¸¦ ¸î¹ø ÂïÀ» °ÍÀÎÁö °è»ê
        $y_max = ceil($h_max / ($mark_h + $padding));

        //·çÇÁ¸¦ µ¹¸®¸é¼­ ¿öÅÍ¸¶Å©¸¦ ÂïÀ½
        for($x = 0; $x < $x_max; $x++){

            for($y = 0; $y < $y_max; $y++){

                //±âÁØÁ¡À» ±¸ÇÑ´Ù.
                $src_x = $x * ($mark_w + $padding) + $padding;
                $src_y = $y * ($mark_h + $padding) + $padding;

                $copy_w = $mark_w;
                $copy_h = $mark_h;

                if ($src_x + $mark_w > $w_max) $copy_w = $w_max - $src_x;
                if ($src_y + $mark_h > $h_max) $copy_h = $h_max - $src_y;

                if ($sharpness != 100) {//¼±¸íµµ°¡ 100 ÀÌ ¾Æ´Ò°æ¿ì¿¡´Â ¼±¸íµµ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Â imagecopymerge »ç¿ë

                    $result_watermark = imagecopymerge($src, $mark, $src_x, $src_y, 0, 0, $copy_w, $copy_h, $sharpness);
                }
                else {//¼±¸íµµ°¡ 100 ÀÏ °æ¿ì¿¡´Â Åõ¸íÀÌ¹ÌÁö¸¦ »ç¿ëÇÒ¼ö ÀÖ´Â imagecopyresampled »ç¿ë

                    $result_watermark = imagecopyresampled ($src , $mark , $src_x, $src_y, 0 , 0 , $copy_w, $copy_h , $copy_w, $copy_h);
                }

                if ($result_watermark === false) {

                    @imagedestroy($mark);

                    $GLOBALS['errormsg'] = "¿öÅÍ¸¶Å© Ã³¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.";

                    return false;
                }
            }
        }
    }
    else {//¿öÅÍ¸¶Å©¸¦ ÇÏ³ª¸¸ ÂïÀ» °æ¿ì¿¡ÀÇ Ã³¸®

        //¿öÅÍ¸¶Å©ÀÇ º¹»çÇÒ ³Êºñ, ³ôÀÌ ±âº»°ª ÁöÁ¤
        $copy_w = $mark_w;
        $copy_h = $mark_h;

        switch($pos){

            case 1 : //»ó´Ü ¿ÞÂÊ

                $src_x = 0 + $padding;
                $src_y = 0 + $padding;

                break;

            case 2 : //»ó´Ü ¿À¸¥ÂÊ

                $src_x = $src_w - $mark_w - $padding;
                $src_y = 0 + $padding;

                break;

            case 3 : //ÇÏ´Ü ¿ÞÂÊ

                $src_x = 0 + $padding;
                $src_y = $src_h - $mark_h - $padding;

                break;

            case 4 : //ÇÏ´Ü ¿À¸¥ÂÊ

                $src_x = $src_w - $mark_w - $padding;
                $src_y = $src_h - $mark_h - $padding;

                break;

            case 5 : //Áß¾Ó

                $src_x = ceil(($src_w - $mark_w) / 2);
                $src_y = ceil(($src_h - $mark_h) / 2);

                break;

            default : // ±× ¹ÛÀÇ °ªÀº ÀüºÎ »ó´Ü ¿ÞÂÊ Ä¡ºÎ

                $src_x = 0 + $padding;
                $src_y = 0 + $padding;

        }

        if ($sharpness != 100) {//¼±¸íµµ°¡ 100 ÀÌ ¾Æ´Ò°æ¿ì¿¡´Â ¼±¸íµµ¸¦ »ç¿ëÇÒ¼ö ÀÖ´Â imagecopymerge »ç¿ë

            $result_watermark = imagecopymerge($src, $mark, $src_x, $src_y, 0, 0, $copy_w, $copy_h, $sharpness);
        }
        else {//¼±¸íµµ°¡ 100 ÀÏ °æ¿ì¿¡´Â Åõ¸íÀÌ¹ÌÁö¸¦ »ç¿ëÇÒ¼ö ÀÖ´Â imagecopyresampled »ç¿ë

            $result_watermark = imagecopyresampled ($src , $mark , $src_x, $src_y, 0 , 0 , $copy_w, $copy_h , $copy_w, $copy_h);
        }

        @imagedestroy($mark);

        if ($result_watermark === false) {

            $GLOBALS['errormsg'] = "¿öÅÍ¸¶Å© Ã³¸®¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.";

            return false;
        }
    }

    return true;
}



/*
ÀÌ¸§ : get_remote_image

¿ëµµ : ¿ÜºÎÀÇ ÀÌ¹ÌÁö¸¦ ÀÐ¾î¿È

¼º°ø½Ã ¸®ÅÏ°ª : ÀÌ¹ÌÁö ÆÄÀÏ ³»¿ë

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $url : ¿ÜºÎ ÀÌ¹ÌÁö ÁÖ¼Ò
==> $referer : ¸®ÆÛ·¯, »ý·« °¡´É, »ý·«½Ã ±âº» È£½ºÆ®°¡ µé¾î°¨
*/

function get_remote_image($url, $referer='') {

    $url_info = parse_url($url);

    $url_info['scheme'] = strtolower($url_info['scheme']);
    if ($url_info['scheme'] != 'http' && $url_info['scheme'] != 'https') {

        $GLOBALS['errormsg'] = "Á¤»óÀûÀÎ ÁÖ¼Ò°¡ ¾Æ´Õ´Ï´Ù.";

        return false;
    }

    if (empty($url_info['port'])) {

        if ($url_info['scheme'] == 'http') $url_info['port'] = '80';
        else $url_info['port'] = '443';
    }

    if (empty($url_info['path'])) $url_info['path'] = '/';
    if (!empty($url_info['query'])) $url_info['query'] = '?' . $url_info['query'];

    if (empty($referer)) {

        $referer = $url_info['scheme'] . '://' . $url_info['host'];
        if ($url_info['port'] != 80 && $url_info['port'] != 443) $referer .= ':' . $url_info['port'];
        $referer .= '/';
    }

    if ($url_info['scheme'] == 'http') $fp = fsockopen($url_info['host'], $url_info['port'], $errno, $errstr, 30);
    else $fp = fsockopen('ssl://' . $url_info['host'], $url_info['port'], $errno, $errstr, 30);

    if ($fp) {

        $put = "GET " . $url_info['path'] . $url_info['query'] . " HTTP/1.1\r\n";
        $put .= "Host: " . $url_info['host'] . "\r\n";
        $put .= "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2\r\n";
        $put .= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        $put .= "Accept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $put .= "Referer: " . $referer . "\r\n";
        $put .= "Connection: Close\r\n\r\n";

        fwrite($fp, $put);

        $header = $status = $return = '';
        while (!feof($fp)) {

            $header_ = fgets($fp, 128);
            $header .= $header_;

            if ($header_ == "\r\n") break;

            if (empty($status)) {

                preg_match("`^HTTP/[^\s]*\s+([0-9]+)\s`", $header_, $status);
                $status = $status[1];
            }
            else {

                if ($status == 302) {

                    preg_match("`^(Location:|URI:)\s+(.*)`", rtrim($header_), $redirect);
                    $redirect = $redirect[2];

                    if (!empty($redirect)) {

                        if(!preg_match("|\:\/\/|", $redirect)) {

                            $redirect_ = $url_info['scheme'] . '://' . $url_info['host'];
                            if ($url_info['port'] != 80 && $url_info['port'] != 443) $redirect_ .= ':' . $url_info['port'];

                            if(!preg_match("`^/`", $redirect))
                                $redirect_ .= '/' . $redirect;
                            else
                                $redirect_ .= $redirect;

                            $redirect = $redirect_;
                        }

                        break;
                    }
                }
                else if ($status != 200){

                    break;
                }
            }
        }

        if ($status == 302 && !empty($redirect)) {

            fclose($fp);
            return get_remote_image($redirect, $referer);
        }
        else if ($status != 200) {

            fclose($fp);

            $GLOBALS['errormsg'] = "ÀÀ´äÀÌ 200 ÀÌ ¾Æ´Õ´Ï´Ù. " . $status;

            return false;
        }

        while (!feof($fp)) {

            $return .= fgets($fp, 128);
        }
        fclose($fp);
    }
    else  {

        $GLOBALS['errormsg'] = "¼ÒÄÏ Á¢¼Ó¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.";

        return false;
    }

    return $return;
}



/*
ÀÌ¸§ : create_thumbnail

¿ëµµ : ¿øº»À» Á¶°Ç¿¡ µû¶ó ¸®»çÀÌÁî, Å©·Ó, ¿öÅÍ¸¶Å©¸¦ Ã³¸®ÇÏ¿© ÆÄÀÏ·Î ÀúÀåÇÔ

¼º°ø½Ã ¸®ÅÏ°ª : true

½ÇÆÐ½Ã ¸®ÅÏ°ª : false

ÀÎÀÚ :
==> $path_src_file_or_url : ¿øº»ÆÄÀÏÀÇ Àý´ë°æ·Î ¶Ç´Â »ó´ë°æ·Î ¶Ç´Â ÁÖ¼Ò
==> $path_save_file : ½æ³×ÀÏÀ» ÀúÀåÇÒ Àý´ë°æ·Î ¶Ç´Â »ó´ë°æ·Î
==> $save_w : ¸¸µé ½æ³×ÀÏÀÇ ³Êºñ
==> $save_h : ¸¸µé ½æ³×ÀÏÀÇ ³ôÀÌ, »ý·« °¡´ÉÇÏ¸ç »ý·«½Ã ±âº»°ªÀº 0
==> $options : ÇÔ¼ö ³»ºÎ¿¡ Á¤ÀÇµÈ º¯¼öµéÀÇ °ªÀ» º¯°æÇÒ¶§ »ç¿ë, ¹è¿­ÇüÅÂ, »ý·«°¡´ÉÇÏ¸ç »ý·«½Ã ±âº»°ªÀº ºó¹è¿­(Array())
                                ==> $options['save_quality'] : ÆÄÀÏ·Î ÀúÀå½Ã ÀúÀåµÉ ÆÄÀÏÀÇ Ç°Áú, 100 ÀÌÇÏÀÇ ¾çÀÇ Á¤¼ö¸¸ »ç¿ë, gif´Â ÀÇ¹Ì ¾øÀ½
                                ==> $options['save_force'] : ÀÌ¹Ì µ¿ÀÏÇÑ °æ·Î¿¡ µ¿ÀÏÀÌ¸§ÀÇ ÆÄÀÏÀÌ Á¸ÀçÇÒ¶§ÀÇ Ã³¸® °áÁ¤
                                                                                                                        0 ÀÌ¸é false ¹ÝÈ¯, 1 ÀÌ¸é ´õÀÌ»ó ½ÇÇà¾ÈÇÏ°í true ¹ÝÈ¯, 2 ÀÌ¸é ±âÁ¸°Å´Â Áö¿ì°í »õ·Î ÀúÀå
                                ==> $options['crop_use'] : Å©·Ó »ç¿ë ¿©ºÎ, 0 Àº »ç¿ë¾ÈÇÔ, 1Àº »ç¿ëÇÔ
                                ==> $options['crop_pos_width'] : ³Êºñ ±âÁØÀ¸·Î Å©·ÓÇÒ¶§ ±âÁØºÎÀ§ °áÁ¤, 1Àº ¿ÞÂÊ, 2´Â °¡¿îµ¥, 3Àº ¿À¸¥ÂÊ
                                ==> $options['crop_pos_height'] : ³ôÀÌ ±âÁØÀ¸·Î Å©·ÓÇÒ¶§ ±âÁØºÎÀ§ °áÁ¤, 1Àº »ó´Ü, 2´Â Áß´Ü, 3Àº ÇÏ´Ü
                                ==> $options['watermark_path_file'] : ¿öÅÍ¸¶Å© ÀÌ¹ÌÁö ÆÄÀÏÀÇ Àý´ë°æ·Î ¶Ç´Â »ó´ë°æ·Î
                                ==> $options['watermark_pos'] : ¿öÅÍ¸¶Å© Âï´Â À§Ä¡ °áÁ¤, 1 Àº »ó´Ü ¿ÞÂÊ, 2´Â »ó´Ü ¿À¸¥ÂÊ, 3Àº ÇÏ´Ü ¿ÞÂÊ, 4´Â ÇÏ´Ü ¿À¸¥ÂÊ, 5´Â Áß¾Ó, 10 Àº ÀüÃ¼¿¡ ¹Ýº¹
                                ==> $options['watermark_sharpness'] : ¿öÅÍ¸¶Å©ÀÇ ¼±¸íµµ, 100 ÀÌÇÏÀÇ ¾çÀÇ Á¤¼ö¸¸ »ç¿ë
                                                                                                                                         ==> 100 ÀÏ°æ¿ì¿¡´Â Åõ¸íÀÌ¹ÌÁö »ç¿ë°¡´É
                                ==> $options['watermark_padding'] : ¿öÅÍ¸¶Å©ÀÇ ¿©¹é, 0ÀÌ»óÀÇ ¾çÀÇ Á¤¼ö, ÆÐµùÀÇ Å©±â´Â ¿öÅÍ¸¶Å©ÀÌ¹ÌÁöÀÇ ³Êºñ³ª ³ôÀÌº¸´Ù Å¬¼ö ¾øÀ½
*/

function create_thumbnail($path_src_file_or_url, $path_save_file, $save_w, $save_h=0, $options=Array()){

    //±âº»°ª ¼³Á¤
    $save_quality = 70;//ÀúÀå Ç°Áú : 70 %
    $save_force = 2;//ÀúÀåÇüÅÂ : ÆÄÀÏ µ¤¾î¾º¿ò

    $crop_use = 0;//Å©·Ó »ç¿ë¿©ºÎ
    $crop_pos_width = 2;//³Êºñ ±âÁØ Å©·Ó½Ã Áß¾ÓÀ» ±âÁØ
    $crop_pos_height = 1;//³ôÀÌ ±âÁØ Å©·Ó½Ã »ó´ÜÀ» ±âÁØ

    $watermark_path_file = '';//¿öÅÍ¸¶Å©·Î »ç¿ëÇÒ ÆÄÀÏ °æ·Î : ¾øÀ½
    $watermark_pos = 4;//¿öÅÍ¸¶Å© Âï´Â À§Ä¡ : ÇÏ´Ü ¿À¸¥ÂÊ
    $watermark_sharpness = 30;//¿öÅÍ¸¶Å© ÀÌ¹ÌÁöÀÇ ¼±¸íµµ : 30 %
    $watermark_padding = 10;//¿øº»°ú ¿öÅÍ¸¶Å© »çÀÌÀÇ ¿©¹é : 10px

    //±âº»°ª Àç¼³Á¤
    if (!empty($options)) @extract($options);

    $path_src_file_or_url = trim($path_src_file_or_url);
    if (preg_match("`^http`i", $path_src_file_or_url)) {

        $remote_image_text = get_remote_image($path_src_file_or_url);
        if (empty($remote_image_text)){

            return false;
        }

        $path_temp_dir = sys_get_temp_dir();
        $path_src_file = tempnam($path_temp_dir, "RI");

        $fp = @fopen($path_src_file, "w");
        @fwrite($fp, $remote_image_text);
        @fclose($fp);

        //¿øº» ¸®¼Ò½º »ý¼º
        list($src, $src_w, $src_h) = get_image_resource_from_file ($path_src_file);

        @unlink($path_src_file);
    }
    else {

        $path_src_file = $path_src_file_or_url;

        //¿øº» ¸®¼Ò½º »ý¼º
        list($src, $src_w, $src_h) = get_image_resource_from_file ($path_src_file);
    }

    if (empty($src)) return false;

    //¸®»çÀÌÁî ¶Ç´Â Å©·Ó ¸®»çÀÌÁî
    if ($crop_use == 1) {//Å©·Ó ¸®»çÀÌÁî

        $dst = get_image_cropresize($src, $src_w, $src_h, $save_w, $save_h, $crop_pos_width, $crop_pos_height);
    }
    else {//¸®»çÀÌÁî

        $dst = get_image_resize($src, $src_w, $src_h, $save_w, $save_h);
    }

    @imagedestroy($src);
    if (empty($dst)) return false;

    $save_w = imagesx($dst);//»ý¼ºµÈ ½æ³×ÀÏ ¸®¼Ò½º¿¡¼­ ½ÇÁ¦ ³Êºñ¸¦ ±¸ÇÑ´Ù.
    $save_h = imagesy($dst);//»ý¼ºµÈ ½æ³×ÀÏ ¸®¼Ò½º¿¡¼­ ½ÇÁ¦ ³ôÀÌ¸¦ ±¸ÇÑ´Ù.

    //¿öÅÍ¸¶Å© ÀÌ¹ÌÁö°¡ ÆÄÀÏÀÏ °æ¿ì, ¿öÅÍ¸¶Å© Ã³¸®
    if (!empty($watermark_path_file) && is_file($watermark_path_file)) {

        $result_watermark = proc_watermark($dst, $save_w, $save_h, $watermark_path_file, $watermark_pos, $watermark_sharpness, $watermark_padding);

        if (empty($result_watermark)) return false;
    }

    $result_save = save_image_from_resource ($dst, $path_save_file, $save_quality, $save_force);

    @imagedestroy($dst);

    return $result_save;
}

?>