<?php

###############################################################
# Thumbnail Image Generator 1.23
###############################################################
# Visit http://www.zubrag.com/scripts/ for updates
###############################################################

// REQUIREMENTS:
// PHP 4.0.6 and GD 2.0.1 or later
// May not work with GIFs if GD2 library installed on your server
// does not support GIF functions in full

// Parameters:
// src - path to source image
// dest - path to thumb (where to save it)
// x - max width
// y - max height
// q - quality (applicable only to JPG, 1 to 100, 100 - best)
// t - thumb type. "-1" - same as source, 1 = GIF, 2 = JPG, 3 = PNG
// f - save to file (1) or output to browser (0).

// Sample usage:
// 1. save thumb on server
// http://www.zubrag.com/thumb.php?src=test.jpg&dest=thumb.jpg&x=100&y=50
// 2. output thumb to browser
// http://www.zubrag.com/thumb.php?src=test.jpg&x=50&y=50&f=0


// Below are default values (if parameter is not passed)

// save to file (true) or output to browser (false)
$save_to_file = true;

// quality
$image_quality = 100;

// resulting image type (1 = GIF, 2 = JPG, 3 = PNG)
// enter code of the image type if you want override it
// or set it to -1 to determine automatically
$image_type = -1;

// maximum thumb side size
$max_x = 100;
$max_y = 100;

// Folder where source images are stored (thumbnails will be generated from these images).
// MUST end with slash.
//$images_folder = '/home/images/';

// Folder to save thumbnails, full path from the root folder, MUST end with slash.
// Only needed if you save generated thumbnails on the server.
// Sample for windows:     c:/wwwroot/thumbs/
// Sample for unix/linux:  /home/site.com/htdocs/thumbs/
//$thumbs_folder = '/home/thumbs/';


///////////////////////////////////////////////////
/////////////// DO NOT EDIT BELOW
///////////////////////////////////////////////////

$to_name = '';

if (isset($_REQUEST['f'])) {
  $save_to_file = intval($_REQUEST['f']) == 1;
}

if (isset($_REQUEST['src'])) {
  $from_name = urldecode($_REQUEST['src']);
}
else {
  die("Source file name must be specified.");
}

if (isset($_REQUEST['dest'])) {
  $to_name = urldecode($_REQUEST['dest']);
}
else if ($save_to_file) {
  die("Thumbnail file name must be specified.");
}

if (isset($_REQUEST['q'])) {
  $image_quality = intval($_REQUEST['q']);
}

if (isset($_REQUEST['t'])) {
  $image_type = intval($_REQUEST['t']);
}

if (isset($_REQUEST['x'])) {
  $max_x = intval($_REQUEST['x']);
}

if (isset($_REQUEST['y'])) {
  $max_y = intval($_REQUEST['y']);
}

// Allocate all necessary memory for the image.
// Special thanks to Alecos for providing the code.
ini_set('memory_limit', '-1');

function SaveImage($type, $im, $filename, $quality, $to_file = true) {

  $res = null;

  // ImageGIF is not included into some GD2 releases, so it might not work
  // output png if gifs are not supported
  if(!function_exists('imagegif')) $type = 3;

  switch ($type) {
    case 1:
      if ($to_file) {
        $res = ImageGIF($im,$filename);
      }
      else {
        header("Content-type: image/gif");
        $res = ImageGIF($im);
      }
      break;
    case 2:
      if ($to_file) {
        $res = ImageJPEG($im,$filename,$quality);
      }
      else {
        header("Content-type: image/jpeg");
        $res = ImageJPEG($im,'',$quality);
      }
      break;
    case 3:
      if ($to_file) {
        $res = ImagePNG($im,$filename);
      }
      else {
        header("Content-type: image/png");
        $res = ImagePNG($im,'',$quality);
      }
      break;
  }

  return $res;

}

function ImageCreateFromType($type,$filename) {
 $im = null;
 switch ($type) {
   case 1:
     $im = ImageCreateFromGif($filename);
     break;
   case 2:
     $im = ImageCreateFromJpeg($filename);
     break;
   case 3:
     $im = ImageCreateFromPNG($filename);
     break;
  }
  return $im;
}

// generate thumb from image and save it
function GenerateThumbFile($from_name, $to_name, $max_x, $max_y) {

  global $save_to_file, $image_type, $image_quality;

  // if src is URL then download file first
  $temp = false;
  if (substr($from_name,0,7) == 'http://') {
    $tmpfname = tempnam("tmp/", "TmP-");
    $temp = @fopen($tmpfname, "w");
    if ($temp) {
      @fwrite($temp, @file_get_contents($from_name)) or die("Cannot download image");
      @fclose($temp);
      $from_name = $tmpfname;
    }
    else {
      die("Cannot create temp file");
    }
  }

  // get source image size (width/height/type)
  // orig_img_type 1 = GIF, 2 = JPG, 3 = PNG
  list($orig_x, $orig_y, $orig_img_type, $img_sizes) = GetImageSize($from_name);

  // should we override thumb image type?
  $image_type = ($image_type != -1 ? $image_type : $orig_img_type);

  // check for allowed image types
  if ($orig_img_type < 1 or $orig_img_type > 3) die("Image type not supported");
  
  if ($orig_x > $max_x or $orig_y > $max_y) {

    // resize
    $per_x = $orig_x / $max_x;
    $per_y = $orig_y / $max_y;
    if ($per_y > $per_x) {
      $max_x = $orig_x / $per_y;
    }
    else {
      $max_y = $orig_y / $per_x;
    }

  $max_x = $orig_x;
  $max_y = $orig_y;
 

  }
  else {
    // keep original sizes, i.e. just copy
    if ($save_to_file) {
      @copy($from_name, $to_name);
    }
    else {
      switch ($image_type) {
        case 1:
            header("Content-type: image/gif");
            readfile($from_name);
          break;
        case 2:
            header("Content-type: image/jpeg");
            readfile($from_name);
          break;
        case 3:
            header("Content-type: image/png");
            readfile($from_name);
          break;
      }
    }
    return;
  }

  if ($image_type == 1) {
    // should use this function for gifs (gifs are palette images)
    $ni = imagecreate($max_x, $max_y);
  }
  else {
    // Create a new true color image
    $ni = ImageCreateTrueColor($max_x,$max_y);
  }

  // Fill image with white background (255,255,255)
  $white = imagecolorallocate($ni, 255, 255, 255);
  imagefilledrectangle( $ni, 0, 0, $max_x, $max_y, $white);
  // Create a new image from source file
  $im = ImageCreateFromType($orig_img_type,$from_name);
  // Copy the palette from one image to another
  imagepalettecopy($ni,$im);
  // Copy and resize part of an image with resampling
  imagecopyresampled(
    $ni, $im,             // destination, source
    0, 0, 0, 0,           // dstX, dstY, srcX, srcY
    $max_x, $max_y,       // dstW, dstH
    $orig_x, $orig_y);    // srcW, srcH

  // save thumb file
  SaveImage($image_type, $ni, $to_name, $image_quality, $save_to_file);

  if($temp) {
    unlink($tmpfname); // this removes the file
  }
}

// generate
GenerateThumbFile($images_folder . $from_name, $thumbs_folder. $to_name, $max_x, $max_y);

?>

<?




exit;
function remote_image($urlstr){
  $url = parse_url($urlstr);
 

  $domain = str_replace("www.","",$url[host]);
  $ext = substr($urlstr,strrpos($urlstr,".") + 1);

  $string = "";

  $res = fsockopen("$domain", 80, $strErrorNo, $strErrStr, 2);

  if($res){
 
 
    $headerstr = "GET $urlstr HTTP/1.1\r\n";
    $headerstr.= "Host:$domain:80\r\n";
    $headerstr.= "\r\n";

    fputs($res, $headerstr);

    while (!feof($res)){
   
   $string.= fgets($res, 1024);
    }
    fclose($res);
  }

  if($ext == "gif")
    return substr($string,strpos($string,"GIF89a"));
  elseif($ext == "jpg" || $ext == "jpeg")
    return substr($string,strpos($string,"image/jpeg") + 14);
}

function image_save($file,$string){
  $fp = @fopen ($file,'w');
  if(!$fp) echo $file;

  fwrite ($fp,$string);
  fclose ($fp);
}


$col[14] = "http://image.gmarket.co.kr/service_image/2007/05/03/Admin_upload200753_165837.GIF";
$file1 = remote_image($col[14]);

          if($file1 && strpos($file1,"Not Found") < 1){
            $file_name = substr($col[14],strrpos($col[14],"/")+1);

            $file_first = substr($file_name,0,strrpos($file_name,"."));
            $file_last = substr($file_name,strrpos($file_name,".") + 1);
            $file_newname1 = "$file_first" . rand(100,999) . ".$file_last";
     
      image_save("$DOCUMENT_ROOT/a/$file_newname1",$file1);
          }




?>


<?


exit;?>

2009/04/27 19:24 2009/04/27 19:24
전 PHP에서 외부 웹페이지를 가져올 때 file_get_contents라는 함수를 즐겨쓰는데, 이 놈이 이미지까지 해결해 주더군요. 여기까진 다 아시겠고... :)

위 함수로 해결 안되는 것이 헤더인데요, 마임타입이라던지 잡다한 놈을 얻기 위해서 소켓을 열어서 헤더를 파싱해서 사용하시는 분이 많더군요(PHP Q&A게시판에서 자주 나온다고 할까나...)

1원짜리 팁은 바로 이것입니다.

$http_response_header

이 넘이 있다는 사실을 지금까진 몰랐는데, 상당히 재미있는 놈이더군요. 일단, PHP에서 미리 정의된 변수로, file_get_contents로 외부 페이지던 동영상이던 읽어오면 위 변수에는 헤더가 저장이 됩니다.

메뉴얼을 링크해놨는데, 뭐 이런 식으로 나온다고 하네요.

<?php
file_get_contents("http://example.com");
var_dump($http_response_header);
?>

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}

외부 이미지와 마임타입을 가져오기 위해서 다음과 같이 이용합니다.

$a = file_get_contents($imageUrl);
foreach($http_response_header as $item)
{
    if(preg_match('/Content-Type/', $item))
    {
        $contentType = trim(preg_replace('/.+:/', '', $item));
        continue;
    }
}
2009/04/27 19:22 2009/04/27 19:22
이 소스코드는 php 버전 5.x 이상에서 사용할수 있습니다

<?

// winamp 방송정보 클래스 정의문서를 포함시키기
include_once("class_cast_info.php");


//  winamp 방송정보 객체생성
$castObj = new winamp_cast_info();


// get_info() 메서드에 2번째인자에 1을 넣으면 청취자 관련 정보만 가져옴
$castObj->get_info("www.mukulcast.com");
//$castObj->get_info("sc20.saycast.com:8568",1);


echo "방송제목:", $castObj->info["Title"] , "<br>";
echo "방송장르:" , $castObj->info["Genre"] , "<br>";
echo "방송URL:" , $castObj->info["URL"] , "<br>";
echo "AIM:" , $castObj->info["AIM"] , "<br>";
echo "IRC채널:" , $castObj->info["IRC"] , "<br>";
echo "현재곡:" , $castObj->info["CurrentSong"] , "<br>";
echo "전송속도:" , $castObj->info["Kbps"] ,"<br>";


// 청취자 관련 요소들
echo "청취자수:" , $castObj->info["Listeners"] ,"<br>";
echo "최대청취가능인원:" , $castObj->info["MaxListeners"] , "<br>";
echo "최대청취자수:" , $castObj->info["ListenersPeak"] , "<br>";
echo "평균청취시간:" , $castObj->info["AverageListenTime"] , "<br>";


// get_info() 메서드에 1번째인자 방송주소가 www.mukulcast.com 이런형식이면 설정되는 요소
echo $castObj->real_ip , "<br>";
echo $castObj->real_port , "<br>";


/*

    세이케스트는 멀티서버로 되어 있으므로 청취자 인원을 정확히 가져오지 못합니다
    만약에 모든서버의 청취자 인원을 원하시면 아래처럼 하시면 됩니다(단! 모든방송서버의 주소를 알아야합니다)

    $castObj->get_info("sc20.saycast.com:8001",1);
    $total_Listeners += $castObj->info["Listeners"];

    $castObj->get_info("sc22.saycast.com:8003",1);
    $total_Listeners += $castObj->info["Listeners"];

    $castObj->get_info("sc24.saycast.com:8005",1);
    $total_Listeners += $castObj->info["Listeners"];

    $castObj->get_info("sc25.saycast.com:8007",1);
    $total_Listeners += $castObj->info["Listeners"];

    echo $total_Listeners;
    
    참고) 위에있는 주소는 설명을하기 위해서 임의로 작성된것입니다
    

*/


?>
2009/04/27 19:12 2009/04/27 19:12

editor/dialog 폴더에 있는 fck_image.html을 열어 27 라인쯤에 있는

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

라는 부분을 아래와 같이 수정한다.

<meta http-equiv="Content-Language" content="ko">
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">


그럼 해결됩니다.

2009/04/21 10:48 2009/04/21 10:48
전 PHP에서 외부 웹페이지를 가져올 때 file_get_contents라는 함수를 즐겨쓰는데, 이 놈이 이미지까지 해결해 주더군요. 여기까진 다 아시겠고... :)

위 함수로 해결 안되는 것이 헤더인데요, 마임타입이라던지 잡다한 놈을 얻기 위해서 소켓을 열어서 헤더를 파싱해서 사용하시는 분이 많더군요(PHP Q&A게시판에서 자주 나온다고 할까나...)

1원짜리 팁은 바로 이것입니다.

$http_response_header

이 넘이 있다는 사실을 지금까진 몰랐는데, 상당히 재미있는 놈이더군요. 일단, PHP에서 미리 정의된 변수로, file_get_contents로 외부 페이지던 동영상이던 읽어오면 위 변수에는 헤더가 저장이 됩니다.

메뉴얼을 링크해놨는데, 뭐 이런 식으로 나온다고 하네요.

<?php
file_get_contents("http://example.com");
var_dump($http_response_header);
?>

array(9) {
  [0]=>
  string(15) "HTTP/1.1 200 OK"
  [1]=>
  string(35) "Date: Sat, 12 Apr 2008 17:30:38 GMT"
  [2]=>
  string(29) "Server: Apache/2.2.3 (CentOS)"
  [3]=>
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  [4]=>
  string(27) "ETag: "280100-1b6-80bfd280""
  [5]=>
  string(20) "Accept-Ranges: bytes"
  [6]=>
  string(19) "Content-Length: 438"
  [7]=>
  string(17) "Connection: close"
  [8]=>
  string(38) "Content-Type: text/html; charset=UTF-8"
}

전 외부 이미지와 마임타입을 가져오기 위해서 다음과 같이 이용합니다.

$a = file_get_contents($imageUrl);
foreach($http_response_header as $item)
{
    if(preg_match('/Content-Type/', $item))
    {
        $contentType = trim(preg_replace('/.+:/', '', $item));
        continue;
    }
}
2009/04/12 17:29 2009/04/12 17:29
사용자 삽입 이미지
2008/07/11 00:33 2008/07/11 00:33
실시간상담 프로그램

출처:php스쿨

<iframe name='chat_windows' src="http://아이피:2024/conn?사용자이름" width="430" height=410 frameborder='0' topmargin='0' leftmargin='0' marginwidth='0' marginheight='0' scrolling=no></iframe>
2008/06/04 15:41 2008/06/04 15:41