오랜만에 플러그인 업데이트 합니다. 크게 수정된 것은 없으며, 보호된 글에 대한 썸네일 이미지 표시 여부를 설정에 추가했습니다.
기존 방식은 썸네일 생성시 보호된 글에 대해서는 생성하지 않거나 보여주지 않도록 했던 것을, 나비님 요청에 의해 플러그인 환경설정에서 설정 여부에 따라 썸네일을 공개 또는 보호 하도록 수정 했습니다.

다운로드


설정 예(썸네일 플러그인 환경설정)


추가로 썸네일 생성시 이미지가 없거나 보호된 글일 경우 대체 이미지를 아래의 형태로 수정했습니다.

수정사항

  • 보호된 글의 썸네일 이미지 출력시 lightbox 적용 안되게 수정(글로 이동).
  • 링크 이미지로 생성된 썸네일 lightbox 적용 가능하게 수정.
  • 비공개 카테고리에 해당되는 이미지 썸네일 생성 안되게 수정.
CCL - [Attribution : Noncommercial : Share Alike]
2009/03/11 17:12 2009/03/11 17:12
Trackback address :: 이 글에는 트랙백을 보낼 수 없습니다
  1. DARKLiCH 2009/03/12 00:27

    안녕하세요 J.Parker님!

    보호되어 있는 글 뿐만 아니라, 하위분류(2단 분류)의 글도 출력여부를 설정하게 할 수 있을까요?

    포토카테고리(최상단 분류)에서 비공개갤러리(하위 분류)를 만들었는데, 로그인을 하지 않은 상태에서도
    썸네일이 출력되네요. 물론 클릭시 비공개 카테고리라 없는 페이지라고 나오고요.

    글은 비공개 카테고리 안에 공개설정을 한 상태입니다.

    환절기 감기 조심하세요. :)IP Address : 118.45.···.12

  2. J.Parker 2009/03/12 01:05

    비공개 카테고리에 속한 이미지(글)은 썸네일 생성되지 않게 처리했습니다.
    좋은 꿈꾸세요.^^/

  3. DARKLiCH 2009/03/12 01:18

    감사합니다. 늦은 시간인데, 푹 주무시고 즐거운 내일이 되시길!IP Address : 118.45.···.12

  4. jonggyu 2009/03/13 04:55

    유용한 플러그인 항상 잘 쓰고 있습니다.
    감사합니다.IP Address : 222.0.···.75

  5. J.Parker 2009/03/15 21:13

    저도 감사합니다. 유용하게 잘 사용해 주셔서요.^^

  6. 나비 2009/03/16 21:30

    오랜만의 업뎃이네요. :) 그나저나 나바라는 이름이 등장해서 깜놀.. ㅎㅎ 전줄 알았네요..ㄷㄷIP Address : 121.174.···.87

  7. J.Parker 2009/03/17 23:24

    저도 처음엔 제가 아는 나비님 인줄 알았답니다.^^;
    잘 지내시지요? 좋은 꿈 꾸세요.~~

  8. 업글 요청한 나비 2009/03/17 20:55

    업데이트 요청 바로 반영해주셔서 지금 잘 쓰고 있답니다.
    재주가 없어 늘 도움만 받고 있습니다...고맙습니다..
    근데...글속에 제 홈주소 링크를 좀 풀어주셨으면 어떨련지요..^^
    평소 손님이 없던 방에 갑자기 방문객들이 늘어 당황스럽네요..ㅎㅎ

    환절기 건강 조심하시고 늘 건투를 빕니다...IP Address : 58.225.···.121

  9. J.Parker 2009/03/17 23:26

    잘 반영되고 있나요? 말씀 하신 것 처럼 나비님 링크 해제 했습니다.^^;
    나비님께서도 황사 조심하시고요. 건강하세요.

  10. 낚시배닷컴 2009/03/19 18:31

    링크이미지가 있는데 안보네요
    함 봐주실레요 글이 너무 많아서 그런가요?
    처음에는 질문이 많았었는데 어느덧 거의해결되어가네요
    스킨가지고 공부하고있습니다.
    감사합니다.IP Address : 218.150.···.19

  11. J.Parker 2009/03/20 17:23

    썸네일 생성시 링크이미지의 경우 링크 주고나 여건에 따라 지연이 오래 걸릴 수도 있습니다. 이 때문에 생성이 안될수도 있고요. ftp로 썸네일 파일이 저장되는 디렉토리에 가시면 .work로 저장된 것들이 있을 겁니다. 그것들을 삭제해보세요.

  12. 서영아빠 2009/03/22 09:02

    플러그인 감사히 사용하겠습니다.^^

    매번 신세만 지지 말고 저도 한번 도전해 봐야하는데...ㅠ.ㅠIP Address : 114.201.···.199

  13. DARKLiCH 2009/04/01 20:46

    아이팟 모드(블로그닷컴/i)에서 비공개카테고리(포스트 설정은 공개)가 보이는 문제가 있습니다.

    그리고 비로그인시에도 JP Archive to Selectbox에서 년도 및 개월당 포스트수 출력에서 비공개 포스트도
    숫자에 포함되는 현상이 있네요. ^^;;IP Address : 118.45.···.12

  14. J.Parker 2009/04/03 00:05

    어떤 버전을 사용하고 계시나요? 아이팟 모드에서 비공개 카테고리의 포스트는 보이지 않는 걸로 알고 있습니다.
    그리고 archive 플러그인은 아래와 같이 수정되었습니다.
    - http://dev.tattersite.com/changeset/597

  15. DARKLiCH 2009/04/03 01:06

    이 곳에서 받은 최신버전입니다.
    물론 최상단 분류로 설정된 비공개 카테고리는 출력되지 않지만, 하위 분류로 설정된 비공개 카테고리(포토카테고리에서 비공개갤러리를 만들었을 경우: 글은 공개)의 글이 출력됩니다.IP Address : 118.45.···.12

  16. J.Parker 2009/04/03 02:20

    썸네일 플러그인에서 비공개글은 출력되지 않는 것 맞죠? 관련 댓글 달았습니다.
    - http://forum.tattersite.com/ko/viewtopic.php?pid=34378#p34378

  17. 최재원 2009/06/02 17:03

    썸네일 우측으로 제목과 글 내용이 나오게 하려면 어떻게 하나요?IP Address : 125.132.···.172

  18. J.Parker 2009/06/03 00:48

    별도의 태그로하여금 우측으로 가게 수정해야 합니다. 글 내용 또한 넣기위해서 수정하셔야 할겁니다. 약 222번째 줄입니다.

  19. 최재원 2009/06/04 13:35

    textcube로 블로그 만들고 있습니다. 거의 다 했는데 thumbnail plugin의 소스 수정이 필요합니다.
    제가 관련 지식이 없어서 좀 어려움이 있습니다.
    수정좀 해주시면 감사하겠습니다.

    연락주세요.IP Address : 125.132.···.185

  20. J.Parker 2009/06/04 10:31

    어려움이 많으시나봅니다.
    블로그 ftp주소와 계정정보등을 비밀글로 남겨주세요.
    댓글에 비용부분이나 개인 전화 정보는 삭제해 주시는 것이 좋을 듯 합니다.
    장사하는 것도 아닌데 비용 말씀하시는 사항은 조금 그렇답니다.^^
    다 해드리고 싶지만 저도 사무실서 일하는 처지라--;
    위에 말씀하신 것처럼 썸네일 우측으로 제목과 글 내용이 나오면 되는 건가요?
    다 해드릴수는 없지만 레이아웃은 잡아드리겠습니다.

  21. 최재원 2009/06/04 13:48

    감사합니다.

    썸네일 옆에 제목과 내용 나오는 것과

    제가 Das Monochrom 스킨을 쓰는데 플러그인 없이 리스트 보기하면 하얀 테이블 속에 list가 보입니다.
    썸네일 플러그인을 쓰면 그냥 바탕(회색)에 썸네일이 나타나는데 하얀테이블 속에 나오게 하는것

    이렇게 두 부분만 수정되면 블로그가 완성될 것 같습니다.
    수정만 해주시면 정말 정말 정말 감사하겠습니다.

    게정정보는..... 그런데 비밀글은 어떻게 쓰건가요? 정말 모르는게 많네요...IP Address : 125.132.···.185

  22. J.Parker 2009/06/04 14:03

    앗. 제 댓글엔 비밀글 기능을 제거했다는 것을 깜빡했습니다.
    메일로 보내주세요. 블로그 관리자 로그인 정보와 ftp 계정정보가 필요합니다.
    jparker2.0(at)gmail.com 입니다.
    메일받고 짬내서 들어가보겠습니다. 많은 기대는 하지 마세요.--

  23. 이동원 2009/06/23 14:18

    아래와 같은 에러메시지가 나는데, 왜 이러는지 모르겠네요..T.T

    Undefined index: uCover(8)
    File: /home/good/www/plugins/JP_ThumbnailListViewTT/index.php:569

    --------------------------------------------------------------------------------
    Undefined variable: target(8)
    File: /home/good/www/plugins/JP_ThumbnailListViewTT/index.php:716

    어떤 원인인지..제가 잘 몰라서그러는데, 부탁 드립니다.IP Address : 121.138.···.151

  24. 이동원 2009/06/23 14:21

    비활성화를 하면 아래와 같은 메세지가 나옵니다.
    제가 어떤 부분을 수정해야되는지 조언 부탁드립니다.


    Undefined index: uSide(8)
    File: /home/good/www/plugins/JP_ThumbnailListViewTT/index.php:403

    --------------------------------------------------------------------------------
    Undefined variable: target(8)
    File: /home/good/www/plugins/JP_ThumbnailListViewTT/index.php:532

    --------------------------------------------------------------------------------IP Address : 121.138.···.151

  25. 이동원 2009/06/23 14:33

    Undefined index: alertfont(8)
    File: /home/good/www/plugins/JP_ThumbnailListViewTT/index.php:945

    환경설정을 하고서 저장 버튼을 누르면
    데이타 처리를 할수없습니다라는 경고 메세지가 나오네요..

    이 플러그인을 그냥 ftp로 업로드를 한거밖에 없는데, 어떤걸 수정을하면
    잘 사용을 할수 있을까요? 꼭 부탁을 드립니다.IP Address : 121.138.···.151

  26. J.Parker 2009/06/23 14:45

    플러그인 환경설정 저장하실때는 디버그 모드를 해제하신 후 해보시구요
    위 모든 메세지는 설정된 값이 없어서 나오는 메세지 입니다. 환경설정하시게 되면 출력되지 않습니다.

    ps. 댓글은 하나에 몰아서 해주세요.

  27. Scott Yoon 2009/07/24 15:00

    안녕하세요?
    그동안 잘 쓰다가 서버를 집에서 돌리려고 OSX에 php5와 mysql를 깔아서 쓰려고 힜는데 thumbnail plugin켜고 환경설정 누르면 다음과 같은 메세지가 새창에 뜸니다. 무슨 얘기인지 도통 알수가 없네요. 전 그냥 무작정 따라하는 거라 스크립트에 대한 지식이 없어서요. 해결책과 원인을 부탁드릴께요.

    = 0; $i--) { if ($path{$i} == '.') return strtolower(substr($path, $i + 1)); if (($path{$i} == '/') || ($path{$i} == '\\')) break; } return ''; } //파일 절대경로 찾기 function getFilePath($getFile) { if(file_exists(ROOT."{$getFile}")) return $getFile; else { if(@is_file(".{$getFile}")) $_f_path = "."; elseif(@is_file("..{$getFile}")) $_f_path = ".."; elseif(@is_file("../..{$getFile}")) $_f_path = "../.."; elseif(@is_file("../../..{$getFile}")) $_f_path = "../../.."; elseif(@is_file("../../../..{$getFile}")) $_f_path = "../../../.."; } if($_f_path) return $_f_path.$getFile; } //섬네일 생성 function make_thumb($max_x,$max_y,$src_file,$target_file="", $mode, $thumb_quality) { global $dqEngine, $configVal; requireComponent('Textcube.Function.misc'); $data = misc::fetchConfigVal($configVal); if(isset($data['cutpixel'])){ $dqEngine['thumb_cutpixel'] = $data['cutpixel']; }else{ $dqEngine['thumb_cutpixel'] = 5; } // 타겟파일 검사/지정 $_fThumbnail = $target_file; // if(!$_fThumbnail) { // $tmp = pathinfo($src_file); // $_fThumbnail = $tmp['extension'].".thumb"; // } if(file_exists($_fThumbnail)) $comp_file=$_fThumbnail; else $comp_file=$src_file; if(!chk_imgfile($comp_file,$max_x,$max_y,$mode) || !($max_x||$max_y)) return $comp_file; // $tmp1 = pathinfo($target_file); // $tmp2 = pathinfo($comp_file); // if((!chk_imgfile($comp_file,$max_x,$max_y,$mode) || !($max_x||$max_y)) && ($tmp1['basename'] == $tmp2['basename'])) return $comp_file; if (file_exists($src_file) && filesize($src_file)) { $_GD_VERSION = $dqEngine[gd_version]; //if(!$_GD_VERSION) $_GD_VERSION = get_GDVersion(); unset($_gd_support); $gd_info = get_gdinfo(); $_GIF_Engine = dirname(realpath(__FILE__))."/phpthumb.gif.php"; if($gd_info['JPG Support'] && @file_exists($_GIF_Engine)) $gd_info['GIF Read Support2'] = true; if($_GD_VERSION) { if($gd_info['GIF Read Support']) $_gd_support .=".gif"; if($gd_info['GIF Read Support2']) $_gd_support .=".gif"; if($gd_info['JPG Support']) $_gd_support .=".jpg"; if($gd_info['PNG Support']) $_gd_support .=".png"; if($_GD_VERSION >= 2) $_gd_support .=".GD2"; else $_gd_support .=".GD1"; } $srcimg_info = @getimagesize($src_file); switch($srcimg_info[2]) { case 1: $file_type = "gif"; break; case 2: $file_type = "jpg"; break; case 3: $file_type = "png"; break; case 6: $file_type = "bmp"; break; default: $file_type = "not support"; } if (($gd_info['JPG Support']||$gd_info['PNG Support']||$gd_info['GIF Create Support']) && ereg($file_type,$_gd_support)) { $_fThumbWorkFile = $_fThumbnail.".work"; if(!file_exists($_fThumbWorkFile)) { $fp = fopen($_fThumbWorkFile, "w"); fwrite($fp, "Thumbnail image create works file"); fclose($fp); } $cal_size = cal_thumb_size($src_file,$max_x,$max_y, $mode); switch($file_type) { case "jpg": $src_img=ImageCreateFromjpeg($src_file); break; case "gif": if($gd_info['GIF Read Support']) $src_img=ImageCreateFromgif($src_file); elseif($gd_info['GIF Read Support2']) { include_once $_GIF_Engine; $src_img=gif_loadFileToGDimageResource($src_file); } break; case "png": $src_img=ImageCreateFrompng($src_file); break; case "bmp": $src_img=ImageCreateFromwbmp($src_file); break; } if(ereg(".GD2",$_gd_support)) $dst_img=ImageCreateTrueColor($cal_size[0], $cal_size[1]); if(!$dst_img) $dst_img=ImageCreate($cal_size[0], $cal_size[1]); $color = imagecolorallocate($dst_img,255,255,255); imagefill($dst_img,1,1,$color); $x1 = $cal_size[4] ? 0 - ($cal_size[4] - $cal_size[0])/2 : 0; $y1 = $cal_size[5] ? 0 - ($cal_size[5] - $cal_size[1])/2 : 0; $x2 = $cal_size[4] ? $cal_size[4] : $cal_size[0]; $y2 = $cal_size[5] ? $cal_size[5] : $cal_size[1]; if($cal_size[4] || $cal_size[5]) { $cut_pixel = 0; $pixel_count = $srcimg_info[0] * $srcimg_info[1]; if($pixel_count >= 1600) $cut_pixel = $dqEngine['thumb_cutpixel']; $sx1=$cut_pixel; $sy1=$cut_pixel; $sx2 = $cut_pixel ? ImageSX($src_img)-($cut_pixel*2) : ImageSX($src_img); $sy2 = $cut_pixel ? ImageSY($src_img)-($cut_pixel*2) : ImageSY($src_img); } else { $sx1=0; $sy1=0; $sx2 = ImageSX($src_img); $sy2 = ImageSY($src_img); } if(ereg(".GD2",$_gd_support)) $thumb_img=imageCopyResampled( $dst_img,$src_img,$x1,$y1,$sx1,$sy1,$x2,$y2,$sx2,$sy2); if(!$thumb_img) $thumb_img = imageCopyResized( $dst_img,$src_img,$x1,$y1,$sx1,$sy1,$x2,$y2,$sx2,$sy2); if ($target_dir && !file_exists($target_dir)) { $_mkdir=substr($target_dir,0,strlen($target_dir)-1); if(!@mkdir ($_mkdir,0707)) error("디렉토리 만들기 실패
    ".$_mkdir); if(!@chmod ($_mkdir,0707)) error("퍼미션 에러
    ".$_mkdir); } if($_GD_VERSION >= 2 && $dqEngine[using_usm] && function_exists('UnsharpMask')) { //set_time_limit(20); $dst_img = UnsharpMask($dst_img,$dqEngine['usm_option1'],$dqEngine['usm_option2'],$dqEngine['usm_option3']); } // 이미지 품질 $_thumbnail_quality = $thumb_quality; if($gd_info['JPG Support']) ImageJpeg($dst_img,$_fThumbnail,$_thumbnail_quality); elseif($gd_info['PNG Support']) ImagePng($dst_img,$_fThumbnail,$_thumbnail_quality); elseif($gd_info['GIF Create Support']) ImageGif($dst_img,$_fThumbnail,$_thumbnail_quality); chmod($_fThumbnail,0706); ImageDestroy($dst_img); ImageDestroy($src_img); unlink($_fThumbWorkFile); if(file_exists($_fThumbnail)) return $_fThumbnail; else return $src_file; } return $src_file; } } // HTML 태그를 분석하여 섬네일 생성 function get_ThumbnailFromHTMLTag($x, $y, $tag_str, $target_file, $mode, $thumb_quality) { global $_SERVER, $dqEngine, $blogid; if(!$dqEngine['using_urlImg']) return ''; if(chk_imgfile($target_file, $x, $y, $mode)) { // 링크 이미지가 로컬서버 내에 존재할때 if(substr($_SERVER[HTTP_HOST],0,4)=="www." && substr($_SERVER[REQUEST_URI],0,2)!="/~") $HH = substr($_SERVER[HTTP_HOST],4,strlen($_SERVER[HTTP_HOST])); else $HH = $_SERVER[HTTP_HOST]; if ($tag_str && @eregi($HH, $tag_str)){ // 경로나 호스트에 www.가 포함되었을때의 처리 if(!@eregi("www.",$_SERVER[HTTP_HOST]) && eregi("www.",$tag_str)) { $tag_str=str_replace("www.","",$tag_str); $tag_str=get_indexDir()."/".eregi_replace($HH."/","",eregi_replace("http://","",$tag_str)); } elseif(eregi("www.",$_SERVER[HTTP_HOST]) && !eregi("www.",$tag_str)) { $tag_str=get_indexDir()."/".eregi_replace($HH."/","",eregi_replace("http://","",$tag_str)); } else $tag_str=get_indexDir()."/".eregi_replace($_SERVER[HTTP_HOST]."/","",eregi_replace("http://","",$tag_str)); if(file_exists($tag_str)) $filename = make_thumb($x,$y,$tag_str,$target_file, $mode, $thumb_quality); else $filename = ""; if(file_exists($filename)) return($filename); else return(""); } $_fThumbWorkFile = $target_file.".work"; $fpw = fopen($_fThumbWorkFile, "w"); fwrite($fpw, "Get remote image works file"); if($dqEngine['using_socket']) { // 소켓 방식으로 시도 $str_info = parse_url($tag_str); set_time_limit(30); if($str_info['query']) $str_info['path'] = $str_info['path']."?".$str_info['query']; $str_info['port'] = $str_info['port'] ? $str_info['port'] : 80; $fp = @fsockopen($str_info['host'], ($str_info['port'] == 80 ? 80 : $str_info['port']), $errno, $errstr, 10); if($fp) { fputs($fp,"GET $str_info[path] HTTP/1.1\r\n"); fputs($fp,"Host: $str_info[host]\r\n"); fputs($fp,"User-Agent: Mozilla/4.0\r\n\r\n"); while(trim($buffer = fgets($fp,128)) != "") { if(eregi('Content-Type: ',$buffer)) $header = $buffer; } //set_time_limit(30); //socket_set_blocking($fp,false); $urlfile_is_image = '1'; if(phpversion() >= '4.3.0') stream_set_timeout($fp,10); while(!feof($fp) && connection_status()==0) $urlFile .= fread($fp,1024); } } else { // url_fopen 으로 시도 $fp=@fopen($tag_str, "r"); $urlfile_is_image = '1'; if($fp) { while(!feof($fp) && connection_status()==0) { $urlFile = $urlFile.fread($fp,1024); } } } if($fp) fclose($fp); fclose($fpw); set_time_limit(30); unlink($_fThumbWorkFile); // 임시파일 저장 if($fp && $urlfile_is_image) { if($mode == "list"){ $_thumb_temp = tempnam(ROOT."/cache/thumbnail/{$blogid}/JP_Thumb/list", "thumb_temp_"); }elseif($mode == "side"){ $_thumb_temp = tempnam(ROOT."/cache/thumbnail/{$blogid}/JP_Thumb/sidebar", "thumb_temp_"); }elseif($mode == "cover"){ $_thumb_temp = tempnam(ROOT."/cache/thumbnail/{$blogid}/JP_Thumb/coverphoto", "thumb_temp_"); } $fp = fopen($_thumb_temp, "w"); fwrite($fp, $urlFile); fclose($fp); $filename = make_thumb($x,$y,$_thumb_temp,$target_file, $mode, $thumb_quality); if (!file_exists($filename)) $filename=""; $rt_str = $filename; } if(file_exists($_thumb_temp)) @unlink($_thumb_temp); return $rt_str; } else { if(file_exists($target_file)) return $target_file; else return; } } // 문서에서 이미지태그 추출 function get_imgTag($tmp) { preg_match_all('@@iU', $tmp, $prtstr); $prtstr = str_replace(array('"',"'"), array("",""), $prtstr[2][0]); return $prtstr; } // 문자열에서 url경로 추출 function get_urlPath($str) { if(eregi("\.jpg",$str)) $_file_type = ".jpg"; if(eregi("\.jpeg",$str)) $_file_type = ".jpeg"; if(eregi("\.gif",$str)) $_file_type = ".gif"; if(eregi("\.png",$str)) $_file_type = ".png"; if(eregi("\.bmp",$str)) $_file_type = ".bmp"; if(eregi("\.wmf",$str)) $_file_type = ".wmf"; $old_autoResize_text = " name=zb_target_resize style=\"cursor:hand\" onclick=window.open(this.src)"; $str=str_replace($old_autoResize_text,'',$str); if(!eregi('\?',$str)) $str=str_replace(" ","_DQ_TEMP_STRING_",substr($str,0,strpos($str,$_file_type)+(strlen($_file_type)+1))); $link_pattern = ";((http|https|ftp)://)?[/.?\xA1-\xFEa-zA-Z0-9:_\-]+[.][/?\xA1-\xFEa-zA-Z0-9,:\;&#=_~%()\[\]?\/.,+\*\-]+;i"; preg_match($link_pattern,$str,$ret); //리눅스 시스템이라면 %20 문자를 공백으로 바꾼다. $server_os = get_serverOS(); if(eregi("linux", $server_os)) $ret[0] = str_replace("_DQ_TEMP_STRING_"," ",$ret[0]); else $ret[0] = str_replace("_DQ_TEMP_STRING_","%20",$ret[0]); return $ret[0]; } // 생성될 섬네일 이미지의 크기계산 function cal_thumb_size($src_file, $max_x,$max_y, $mode) { global $dqEngine; static $oldInfo = array("","","",""); if($src_file == $oldInfo[3] && $max_x == $oldInfo[0] && $max_y == $oldInfo[1]) { $cal_size = $oldInfo; return $cal_size; } $img_info = @getimagesize ($src_file); $sx = $img_info[0]; $sy = $img_info[1]; // 원본 이미지에 문제가 있다면 중단 if(!$src_file || !$sx || !$sy) return false; if(!$dqEngine['gd_version'] && $dqEngine['thumb_resize'] > 0) $dqEngine['thumb_resize'] = 0; switch($dqEngine['thumb_resize']) { case 1: // 원본의 비율대로 대칭 리사이즈 if($max_x != 0 && $max_y != 0) { if($sx>$sy) { $cal_size[1]=ceil(($sy*$max_x)/$sx); $cal_size[0]=$max_x; if($cal_size[1] > $max_y) { $cal_size[0]=ceil($sx*$max_y/$sy); $cal_size[1]=$max_y; } if($mode == "side"){ $cal_size[0]=$max_x; $cal_size[1]=ceil(($sy*$max_x)/$sx); } }else { $cal_size[0]=ceil($sx*$max_y/$sy); $cal_size[1]=$max_y; if($cal_size[0] > $max_x) { $cal_size[1]=ceil($sy*$max_x/$sx); $cal_size[0]=$max_x; } if($mode == "side"){ $cal_size[0]=$max_x; $cal_size[1]=ceil(($sy*$max_x)/$sx); } } } if($max_x==0 || $max_y==0) { $tmp_y=ceil(($sy*$max_x)/$sx); $tmp_x=ceil(($sx*$max_y)/$sy); if($max_x>$max_y) { if($sy>$tmp_y) $cal_size[1]=$tmp_y; else $cal_size[1]=$sy; if($sx>$max_x) $cal_size[0]=$max_x; else $cal_size[0]=$sx; }else { if($sx>$tmp_x) $cal_size[0]=$tmp_x; else $cal_size[0]=$sx; if($sy>$max_y) $cal_size[1]=$max_y; else $cal_size[1]=$sy; } } break; case 2: // 지정된 크기로 리사이즈 한다. $cal_size[0] = $max_x; $cal_size[1] = $max_y; break; case 3: // 원본리사이즈를 하면서 지정한 사이즈에 꽉 차는 이미지를 만들고 나머지는 잘라낸다. $cal_size[0] = $max_x; $cal_size[1] = $max_y; if($sx == $sy) { if($max_x>$max_y) $cal_size[5] = $max_x; else $cal_size[4] = $max_y; } else { // if($sx>$sy && $max_x>$max_y) {$org_y = $max_y; $max_y = 0; $org_x = 0;} // elseif($sx<$sy && $max_x<$max_y) {$org_x = $max_x; $max_x = 0; $org_y = 0;} if($sx>$sy && $max_x>$max_y) {$org_y = $max_y; $max_y = 0;} elseif($sx<$sy && $max_x<$max_y) {$org_x = $max_x; $max_x = 0;} else { if($sx>$sy) {$org_x=$max_x; $max_x = 0;} if($sx<$sy) {$org_y=$max_y; $max_y = 0;} } if($max_x==0 || $max_y==0) { $tmp_y=ceil(($sy*$max_x)/$sx); $tmp_x=ceil(($sx*$max_y)/$sy); if($tmp_y < $org_y) { $tmp_y = $org_y; $org_x=$max_x; $max_x = 0; $tmp_x=ceil(($sx*$org_y)/$sy); } elseif($tmp_x < $org_x) { $tmp_x = $org_x; $org_y=$max_y; $max_y = 0; $tmp_y=ceil(($sy*$org_x)/$sx); } if($max_x>$max_y) { if($sy>$tmp_y || $max_y<$tmp_y) $cal_size[5]=$tmp_y; else $cal_size[5]=$sy; if($sy<$tmp_y) $cal_size[5]=$tmp_y; if($sx<$max_x) $cal_size[4]=$tmp_x; }else { if($sx>$tmp_x || $max_x<$tmp_x) $cal_size[4]=$tmp_x; else $cal_size[4]=$sx; if($sx<$tmp_x) $cal_size[4]=$tmp_x; if($sy<$tmp_y) $cal_size[5]=$tmp_y; } } break; } } $cal_size[3]=$src_file; $oldInfo = $cal_size; return $cal_size; } // 섬네일을 생성해야 할 파일인지 검사 function chk_imgfile($src_file,$thumb_x,$thumb_y,$mode) { $new_file=true; $tmp=0; if (file_exists($src_file)) { $old_img = @getimagesize($src_file); $cal_size = cal_thumb_size($src_file, $thumb_x, $thumb_y, $mode); if ($old_img[0]!=$cal_size[0]) $tmp++; if ($old_img[1]!=$cal_size[1]) $tmp++; if ($tmp>0) $new_file=true; else $new_file=false; if(!$old_img[0] || !$old_img[1]) $new_file=true; } $workFile = $src_file.".work"; if(file_exists($workFile)) $new_file = false; return $new_file; } // allow_url_open 켬 function set_URLOpen($value) { if($value==1) @ini_set("allow_url_fopen","1"); if($value==0) @ini_set("allow_url_fopen","0"); } // 서버 OS 알아내기 function get_serverOS () { if(function_exists("posix_uname")) { $server = posix_uname(); return $server[sysname]." ".$server[release]; } ob_start(); phpinfo(1); $server_os=ob_get_contents(); ob_end_clean(); $server_os=strip_tags(stristr($server_os, 'System')); $server_os=explode("\n",$server_os); return substr($server_os[0],6,strlen($server_os[0])); } // PHPThumb에서 가져온 소스들 (약간 수정) function phpinfo_array() { static $phpinfo_array = array(); if (empty($phpinfo_array)) { ob_start(); phpinfo(); $phpinfo = ob_get_contents(); ob_end_clean(); $phpinfo_array = explode("\n", $phpinfo); } return $phpinfo_array; } function get_GDVersion($fullstring=0) { static $cache_gd_version = array(); if (empty($cache_gd_version)) { $gd_info = get_GDInfo(); if (substr($gd_info['GD Version'], 0, strlen('bundled (')) == 'bundled (') { $cache_gd_version[1] = $gd_info['GD Version']; $cache_gd_version[0] = (float) substr($gd_info['GD Version'], strlen('bundled ('), 3); } else { $cache_gd_version[1] = $gd_info['GD Version']; $cache_gd_version[0] = (float) substr($gd_info['GD Version'], 0, 3); } } return $cache_gd_version[intval($fullstring)]; } function get_GDInfo() { if (function_exists('gd_info')) { return gd_info(); } static $gd_info = array(); if (empty($gd_info)) { $gd_info = array( 'GD Version' => '', 'FreeType Support' => false, 'FreeType Linkage' => '', 'T1Lib Support' => false, 'GIF Read Support' => false, 'GIF Create Support' => false, 'JPG Support' => false, 'PNG Support' => false, 'WBMP Support' => false, 'XBM Support' => false ); $phpinfo_array = phpinfo_array(); foreach ($phpinfo_array as $line) { $line = trim(strip_tags($line)); foreach ($gd_info as $key => $value) { if (strpos($line, $key) === 0) { $newvalue = trim(str_replace($key, '', $line)); $gd_info[$key] = $newvalue; } } } if (empty($gd_info['GD Version'])) { if (function_exists('ImageTypes')) { $imagetypes = ImageTypes(); if ($imagetypes & IMG_PNG) { $gd_info['PNG Support'] = true; } if ($imagetypes & IMG_GIF) { $gd_info['GIF Create Support'] = true; } if ($imagetypes & IMG_JPG) { $gd_info['JPG Support'] = true; } if ($imagetypes & IMG_WBMP) { $gd_info['WBMP Support'] = true; } } if (function_exists('ImageCreateFromGIF')) { if ($tempfilename = tempnam(null, '_thumb_')) { if ($fp_tempfile = @fopen($tempfilename, 'wb')) { fwrite($fp_tempfile, base64_decode('R0lGODlhAQABAIAAAH//AP///ywAAAAAAQABAAACAUQAOw==')); fclose($fp_tempfile); $gd_info['GIF Read Support'] = (bool) @ImageCreateFromGIF($tempfilename); } unlink($tempfilename); } } if (function_exists('ImageCreateTrueColor') && @ImageCreateTrueColor(1, 1)) { $gd_info['GD Version'] = '2.0.1 or higher (assumed)'; } elseif (function_exists('ImageCreate') && @ImageCreate(1, 1)) { $gd_info['GD Version'] = '1.6.0 or higher (assumed)'; } } } return $gd_info; } // USM 필터(PHP 4.3.2 에서는 동작하지 않는다.) function UnsharpMask($img, $amount='60', $radius='0.5', $threshold='1') { //////////////////////////////////////////////////////////////////////////////////////////////// //// //// p h p U n s h a r p M a s k //// //// Unsharp mask algorithm by Torstein H?si 2003. //// thoensi_at_netcom_dot_no. //// Please leave this notice. //// /////////////////////////////////////////////////////////////////////////////////////////////// // $img is an image that is already created within php using // imgcreatetruecolor. No url! $img must be a truecolor image. // Attempt to calibrate the parameters to Photoshop: if(eregi('4.3.2',phpversion())) return $img; $amount = min($amount, 500); $amount = $amount * 0.016; $radius = min($radius, 50); $radius = $radius * 2; $threshold = min($threshold, 255); $radius = abs(round($radius)); // Only integers make sense. if ($radius == 0) { return $img; //ImageDestroy($img); //break; } $w = ImageSX($img); $h = ImageSY($img); $imgCanvas = ImageCreateTrueColor($w, $h); $imgCanvas2 = ImageCreateTrueColor($w, $h); $imgBlur = ImageCreateTrueColor($w, $h); $imgBlur2 = ImageCreateTrueColor($w, $h); ImageCopy($imgCanvas, $img, 0, 0, 0, 0, $w, $h); ImageCopy($imgCanvas2, $img, 0, 0, 0, 0, $w, $h); // Gaussian blur matrix: // // 1 2 1 // 2 4 2 // 1 2 1 // ////////////////////////////////////////////////// // Move copies of the image around one pixel at the time and merge them with weight // according to the matrix. The same matrix is simply repeated for higher radii. for ($i = 0; $i < $radius; $i++) { ImageCopy ($imgBlur, $imgCanvas, 0, 0, 1, 1, $w - 1, $h - 1); // up left ImageCopyMerge($imgBlur, $imgCanvas, 1, 1, 0, 0, $w, $h, 50); // down right ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 1, 0, $w - 1, $h, 33.33333); // down left ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 1, $w, $h - 1, 25); // up right ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 1, 0, $w - 1, $h, 33.33333); // left ImageCopyMerge($imgBlur, $imgCanvas, 1, 0, 0, 0, $w, $h, 25); // right ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 1, $w, $h - 1, 20 ); // up ImageCopyMerge($imgBlur, $imgCanvas, 0, 1, 0, 0, $w, $h, 16.666667); // down ImageCopyMerge($imgBlur, $imgCanvas, 0, 0, 0, 0, $w, $h, 50); // center ImageCopy ($imgCanvas, $imgBlur, 0, 0, 0, 0, $w, $h); // During the loop above the blurred copy darkens, possibly due to a roundoff // error. Therefore the sharp picture has to go through the same loop to // produce a similar image for comparison. This is not a good thing, as processing // time increases heavily. ImageCopy ($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 33.33333); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 25); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 20 ); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 16.666667); ImageCopyMerge($imgBlur2, $imgCanvas2, 0, 0, 0, 0, $w, $h, 50); ImageCopy ($imgCanvas2, $imgBlur2, 0, 0, 0, 0, $w, $h); } // Calculate the difference between the blurred pixels and the original // and set the pixels for ($x = 0; $x < $w; $x++) { // each row for ($y = 0; $y < $h; $y++) { // each pixel $rgbOrig = ImageColorAt($imgCanvas2, $x, $y); $rOrig = (($rgbOrig >> 16) & 0xFF); $gOrig = (($rgbOrig >> 8) & 0xFF); $bOrig = ($rgbOrig & 0xFF); $rgbBlur = ImageColorAt($imgCanvas, $x, $y); $rBlur = (($rgbBlur >> 16) & 0xFF); $gBlur = (($rgbBlur >> 8) & 0xFF); $bBlur = ($rgbBlur & 0xFF); // When the masked pixels differ less from the original // than the threshold specifies, they are set to their original value. $rNew = (abs($rOrig - $rBlur) >= $threshold) ? max(0, min(255, ($amount * ($rOrig - $rBlur)) + $rOrig)) : $rOrig; $gNew = (abs($gOrig - $gBlur) >= $threshold) ? max(0, min(255, ($amount * ($gOrig - $gBlur)) + $gOrig)) : $gOrig; $bNew = (abs($bOrig - $bBlur) >= $threshold) ? max(0, min(255, ($amount * ($bOrig - $bBlur)) + $bOrig)) : $bOrig; $pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew); ImageSetPixel($img, $x, $y, $pixCol); } } ImageDestroy($imgCanvas); ImageDestroy($imgCanvas2); ImageDestroy($imgBlur); ImageDestroy($imgBlur2); return $img; //ImageDestroy($img); } // 정확한 document_root 값 찾아내기(서버에 따라 엉뚱하게 리턴하는 경우가 있어서 정밀한 검사가 필요하다) function get_indexDir() { global $_SERVER; $docroot = $_SERVER["DOCUMENT_ROOT"] ? $_SERVER["DOCUMENT_ROOT"] : '\$empty\$'; $scriptfile = $_SERVER["SCRIPT_FILENAME"] ? $_SERVER["SCRIPT_FILENAME"] : $_SERVER["PATH_TRANSLATED"]; $phpself = $_SERVER["PHP_SELF"]; if(!$scriptfile) die("
    스크립트 파일에 대한 정보가 없습니다. ::이 서버에서는 실행할수 없습니다. ::
    "); if(!eregi($docroot,$scriptfile)) { $os = get_serveros(); if(eregi("windows",$os)) $scriptfile = str_replace("\\","/",$scriptfile); if (substr($phpself,0,2)=='/~') { $pattern = ":/~+(/+):i"; $scriptfile = str_replace($pattern,"\\1",$scriptfile); } $tmp = str_replace($phpself,'',$scriptfile).'/'; } else $tmp = $docroot; return $tmp; } ?>IP Address : 75.139.···.13

  28. J.Parker 2009/07/25 02:43

    플러그인 내에 있는 소스코드가 그대로 출력이 되었네요. 서버설정은 잘 되셨는지요? OSX내에 설치하여 사용 테스트를 해보지 않아 답 드리기가 모호 합니다. --;

    ps. 댓글에 긴 코드가 압박하네요 ㅠ.ㅠ

  29. 윤성열 2009/07/25 03:38

    댓글에 긴 코드... 죄송합니다. 어쩔 수 없어서... 서버설정은 모두 정상이라고 여겨집니다. textcube설치도 아무 에러없이 진행 되었고. 다른 기능은 다 되는데 오직 thumbnail에 관련된 플러그인만 동작이 안되네요.
    표지라던가. php 테스트상에는 GD Library 로딩 되었다고 나오고. 혹시 짐작 가시는 거라도 있으면 부탁 드립니다. 아님 정상적인 서버설정은 어떻게 되어야 하는 건지요?IP Address : 96.25.···.59

  30. mainto 2009/09/05 09:45

    도움을 구하기위해 왔다가...
    위에 긴 코드를 보고 글을 남깁니다.

    위처럼 특정한 코드이용시 소스코드가 보일경우에는
    그 소스코드가 <?php 로 시작하지 않고 <? 로 시작하기 때문인 것으로 생각됩니다

    php.ini 에서

    short_open_tag = On

    으로 설정해주세요...
    ( thumb_engine.php 파일 시작이 <? 으로만 되어있는것을 감안하면 해결되리라 생각되네요... )IP Address : 69.169.···.187

  31. mainto 2009/09/05 09:52

    이번에 J.Parker 님의 플러그인을 설치하여 사용하게된 한 유저입니다.

    OSX 에 겨우 GD를 설치하고 이제막 사용하려는데

    썸네일 이미지가 모두 깨져보입니다.

    이미지파일을 확인해보니 모두 크기가 4KB로 되어있네요.

    썸네일 생성시에 문제가 있는가 봅니다.

    제 서버셋팅과 문제가 있는걸까요?

    텍스트큐브에서 사용하는 "이미지 리샘플링" 기능은 잘 작동하네요.

    리샘플링도 GD 를 사용한다고 생각하는것이 저의 잘못된 생각인지...

    혹시 제가 무언가 잘못하고 있는건 아닌지...

    서버는 OSX 10.5
    Apache 2.0
    PHP 5.3.0
    GD Version bundled (2.0.34 compatible)

    ---

    아참 그리고 JPG 사용이 불가능 하다고 나오는데요
    제 서버에서는 enabled 로 나오거든요...

    정말 jpeg 는 사용이 안되는걸까요?
    그래서 지금까지 GIF 와 PNG 로만 테스트 했습니다.
    그래도 계속 이미지는 보여지지 않았지만요;


    확인 부탁드립니다.IP Address : 69.169.···.187

  32. mainto 2009/09/05 10:13

    해결되었습니다.

    function get_GDInfo() {
    if (function_exists('gd_info')) {
    $gd_info = gd_info();
    $gd_info['JPG Support'] = true;
    return $gd_info;
    }
    ....
    생략
    }

    위처럼 강제로 JPG 사용가능으로 설정해주니
    GIF PNG 모두 다 작동되네요...

    왜그런지 잘은 모르겠지만;; 어쨋든;; 작동이 되니 ㅎㅎ;;

    플러그인 감사히 잘 쓰겠습니다.IP Address : 69.169.···.187

  33. J.Parker 2009/09/07 11:03

    텍큐의 이미지 리샘플링은 각각의 JPEG나 GIF의 사용 여부만 체크하다보니 가능 한것 같기도 하고요. OSX 에서의 GD설정후 어찌 나올지 모르지만(같을 것 같아요).. 확인해 보겠습니다.
    임시 해결 하셨다니 다행이네요.. 이 부분은 확인해 보겠습니다.
    즐거운 한주 보내세요.

  34. 피스 2009/09/07 10:21

    안녕하세요. 썸네일 플러그인 잘 사용하고 있습니다. 텍큐는 미디어로그가 없어서 아쉬웠는데 J.Parker님 덕분에 예쁘게 적용해서 쓰고 있어요.

    그런데 몇가지 궁금한게 있습니다.

    1. 제가 한 포스트에 여러 장의 사진을 올리는 편인데 썸네일 플러그인에서는 한 포스트당 하나의 썸네일만 출력되는거 같더라고요. 혹시 이걸 한 포스트 내 모든 사진의 썸네일이 출력되는 걸로 바꿀수 있나요? 환경설정에서 찾아봤는데 이 부분은 없는거 같아서요;

    2. 텍스트만 있는 포스트일 경우에도 리스트에 표시되는데 이 때 이미지가 없기 때문에 기본썸네일?(카메라 모양이 있는거요;)로 나타나잖아요. 개별 썸네일 카테고리를 선택한다 하더라도 제가 모든 포스트에 이미지를 첨부하는게 아니라서 어떻게하든 구멍;;이 생기는데 해결할 방법이 없을까요? 그러니깐 이미지가 있는 포스트만 썸네일 리스트에 표시되도록 하는 방법이요. 혹시 제가 놓친 부분이 있나싶어서 이리저리 환경설정을 해봤지만 기본적으로 해당 카테고리 내의 모든 포스트가 무조건 다 나오게 되있는거 같습니다.

    3. 이건 좀 상관없는 질문인거 같은데;; J.Parker님 블로그 상단의 라인(http://create74.com/line)도 플러그인인가요? 트위터를 블로그에 연결하려다 실패했는데 바로 제가 생각하던 형식의 한줄쓰기(?)툴이라서 눈이 반짝 뜨였습니다!

    음음. 저같이 아무 것도 모르는 레벨1 텍큐 유저도 포털블로거 못지않게 버라이어티한 블로그 생활을 하게 해주는 여러 플러그인 제작해 주셔서 정말 감사드리고요. 앞으로도 잘 부탁드립니다~IP Address : 58.143.···.62

  35. J.Parker 2009/09/07 11:12

    안녕하세요. 피스님...

    첫번째 포스트에 등록된 모든 사진을 보여주는 기능은 없습니다. 출력될 썸네일의 기준을 제작 당시부터 한 포스트당 한개로 정했기 때문에 없는 것이고요. 앞으로도 없을 것 같습니다. 해당 플러그인에서는 요... 추후 다른 썸네일 플러그인 제작시 이점 참고해드리겠습니다.

    두번째는 환경설정에서 포스트에 해당 이미지 파일만 체크해서 가져오는 옵션이 있을 겁니다. all files로 하지 마시고, jpg나, gif 이미지가 있는 것만 체크해서 저장하시면 될겁니다. 단, DB에 입력된 즉, 이미지를 파일 첨부한 것만 해당 됩니다. 링크를 건 이미지는 제외 됩니다.
    이 기능도 추후 링크 이미지까지 지원 될수 있게 지원할 예정입니다.

    세번째 라인 기능은 텍스트큐브 1.8 베타부터 지원되는 기능입니다.
    - 참고 : http://dev.textcube.org/ticket/1300
    1.8 베타나 추후 공개되는 정식버전으로 업그레이드 하시면 사용이 가능하실 겁니다.
    보이는 그대로 관리자가 한줄씩 포스팅하는 형태입니다.

    플러그인 제작시 모든 여건을 충족 시키지 못하는 점 양해 부탁드립니다.

    즐거운 한주 보내세요.

  36. 비밀방문자 2009/09/07 11:52

    관리자만 볼 수 있는 댓글입니다.

  37. H.KIM 2009/10/11 10:37

    표지수정 관련해서 질문을 하나 드릴려고 하는데요.

    JP Thumbnail List를 통해 표지를 출력하면

    메인 소스보기에서
    <div class="coverContents"><div class="cover_photos"><h3>Cover photos</h3> <div class="coverphotos_main">

    디폴트로 Cover photos라는 제목이 출력이 되게 되어 있는데요. 근데 이 제목을 어떻게 수정할지를 모르겠더군요.

    그리고 여러 개의 표지 이미지 출력을 표지로 출력한다면 개개별 cover_photos에 대해 어떻게 이름을 별도로 지정하는지도 모르겠구요.

    플러그인 설정이나 어떤 소스를 건드려야 하는건지 좀 알려주세요.IP Address : 121.129.···.65

  38. J.Parker 2009/10/11 12:48

    Cover photos는 고정이고요. 표지 위젯 설정에서 '편집'을 클릭해서 별도 카테고리를 선택하시면 해당 카테고리명이 표시됩니다.
    개별 Cover photos에 대한 이름 변경은 현재는 지원하지 않고 있습니다.
    위에 말씀드린 것 처럼 표지 위젯 설정에서 Cover photos를 위젯에 위치 하신후 '편집'버튼으로 카테고리를 별도 선택하시어 카테고리 명이 출력되게 하시면 되겠습니다.
    차후, '편집'에서 개별 이름 변경이 가능토록 개선해드리겠습니다.

  39. Alvin 2009/11/12 18:12

    Sorry, This plugin can't use to TC1.8 ver.RC2
    Can you help upgrade this plugins.
    Thanks.IP Address : 61.20.···.207

  40. J.Parker 2009/12/11 11:33

    Upgrade to version Textcube 1.8 RC3

  41. webclear 2009/12/11 10:38

    안녕하세요. J.Parker 님 눈팅만 하다가 처음으로 글을 올리게되네요~
    그간 제작해 주신 유용한 플러그를 잘 사용하고 있는 유저입니다^^
    다름이 아니라~ 이 썸네일 플러그가 참 마음에 드네요. 세부설정에 대한 조절도 디테일하게 잘 구성해 주신거 같아 제가 쓰는 블로그에 메인(커버페이지)을 그 플러그로 변경하려고 하는데요.
    기본정보들이 밑으로 내려오더라구요. 이 부분을 우측 옆으로 나열할 수 있는 방법이 있나해서 물어볼겸 인사드리러 들리게 되었네요^^
    좋은 방법 조언부탁드리며 좋은 하루되시길 빌겠습니다(_ _)*IP Address : 211.192.···.225

  42. J.Parker 2009/12/11 11:36

    안녕하세요. webclear님.. 커버페이지는 제가 들어가보니 우측에 정보가 출력되는 것 같습니다. 수정하셨나 봅니다. 간혹, 정보가 아래로 내려가는 것은 본문의 폭이 작거나 커버 포스트의 정보 항목이 넘칠경우 발생합니다.

    플러그인 내에서 각 항목의 스타일을 잘 조절하셔야 스킨에 맞춤하실 수 있습니다.

    어제보다 더욱 쌀쌀한 금요일입니다. 감기조심하세요.^^

  43. Webclear 2009/12/24 09:44

    J.Parker님 안녕하세요. 최근 블로그 스킨제작 때문에 확인이 늦었네요^^
    유사한 타입의 플러그가 2가지였는데, 혼선이 있었나 봅니다~
    하지만, 지원 플러그의 php파일에서 내용과 태그를 주석 처리하고 스타일로 위치 조절하니 변경이 되네요.

    새 스킨으로 변경하고 플러그 수정으로 조금씩 자리를 잡아 나가는 중이네요^^
    크리스마스 이브 잘 보내시고 앞으로도 좋은 종종 들리겠습니다^^IP Address : 211.192.···.225

  44. 2010/04/03 00:18

    안녕하세요

    다름이 아니오라 텍스트큐브 1.8.3 정식버전에서 J.Parker님의 Thumbnail 플러그인을 활성화 하면

    썸네일이 제대로 출력되지 않고 있습니다.

    플러그인 데이터도 초기화해보고 플러그인 활성화 하고 재설정하기를 수차례 하였는데

    해결책을 찾지 못하였습니다. 제가 확인해보기론 1.8.3 rc1 에서는 제대로 동작했었는데

    어제 공개된 정식 버전으로 업그레이드 해보니까 이런 문제가 발생하였습니다.

    현재는 다시 1.8.2로 다운 그레이드한 상태입니다.

    제가 미숙해서 놓친 부분이 있는지 여쭙고자 댓글 달게 되었습니다.

    그럼 답변 부탁 드리겠습니다. ^^

    좋은 하루 되세요!IP Address : 211.117.···.228

  45. J.Parker 2010/04/05 09:11

    안녕하세요. 1.8 초기때 부터 현재 1.8.3까지 별 문제 없이 잘 되고 있습니다.
    어떤 항목이 출력 문제가 있었나요? 혹시 모르니 아래 주소에서 다시 다운로드 받으셔서 덮어씌워 보세요. 현재 제가 텍스트큐브 1.8.3버전에서 쓰고 있는 버전입니다.

    -다운로드 : http://create74.com/JP_ThumbnailListViewTT_20091011.zip

    좋은 한주 보내세요.~

  46. 2010/04/06 00:23

    답변 정말 감사 드립니다.

    제가 블로그 파일 및 DB 초기화후 1.8.3.1로 복구 해본결과 마찮가지로 사이드바 썸네일이 제대로 출력되지 않고 있습니다.

    제 블로그 주소가 http://www.metalpen.net/blog/ 인데요

    깨진 링크로 표시되어있는 썸네일들 등록정보를 들여다보니까 http://www.metalpen.net/blog/blog/thumbnail/1/JP_Thumb/sidebar/thumb_2296234909.jpg

    이런 링크 주소를 가지고 있었습니다. 아시다 시피 중간에 blog가 2번 중복되어서 주소가 만들어져 있기 때문에 썸네일이 잘못된 경로로 인하여 출력되지 않는 것이었습니다.

    원인을 발견하였는데 이것을 해결하려면 어떻게 해야할지 막막합니다. ㅠㅠ

    테스트 서버에서 www.ㅇㅇㅇ.net 과 같은 주소에서는 제대로 동작하는데 뒤에 www.ㅇㅇㅇ.net/blog/ 이런 주소에서는 썸네일 출력이 제대로 되지 않고 있습니다.

    이경우는 텍스트큐브 버그 인가요? 1.8.2 환경에서까지는 잘 썻습니다.

    답변 부탁 드리면서 좋은 하루 보내시길 바랍니다 ^^

    추가. 제가 사용하는 도메인/blog 라는 path는 물리적인 디렉토리 경로 입니다 입니다. ^^ 현재 다시 1.8.2로 다운그레이드 한 상태 입니다.IP Address : 211.117.···.228

  47. 2010/04/06 16:35

    답변 해주셔서 감사합니다^^

    확인해보니까 텍스트큐브 1.8.3.1 패키지에 들어있는 플러그인은 1.9.0312 버전이더군요

    으레 최신 버전이라 플러그인도 최신버전이라 생각해서 미처 확인해보지 못했습니다 ㅠ

    말씀해 주신대로 v1.9.1011로 업데이트 해보도록 하겠습니다. ^^

    마지막까지 귀찮게 해서 정말 죄송 하지만

    말씀해 주신 v1.9.1011 플러그인 다운로드 url이 동작하지 않습니다 ㅠㅠ

    한번 확인해 주셨으면 정말 감사 하겠습니다.

    그럼 오늘 하루도 즐겁게 마무리 하시길 바랍니다 ^^IP Address : 211.117.···.228

  48. J.Parker 2010/04/06 17:16

    서브 계정에서 확인해 봐도 전 정상 출력이 되고 있습니다.
    현재 텍스트큐브 버전은 1.8.3.1 오늘자 최신입니다. 썸네일 플러그인을 최신 버전으로 업데이트 후 다시 확인해 보시기 바랍니다.
    위에 올려 드린 동일 플러그인으로는 텍스트큐브 현재 버전에서도 정상 작동하고 있습니다.
    현재 超님의 썸네일 플러그인 버전이 v1.9.0312이네요. 최근 버전은 v1.9.1011입니다. 아래에서 다운로드 받으셔서 기존 플러그인 파일 몽땅 지우시고 아랫 것으로 대체해보세요.

    -다운로드 : http://create74.com/temp/JP_ThumbnailListViewTT_20091011.zip
    -데모 : http://jparker.pe.kr/blog

  49. J.Parker 2010/04/06 17:17

    다운로드 주소가 잘못되었네요. 수정해뒀습니다.

  50. 2010/04/06 17:27

    J.Parker님 방금 받아서 테스트 해보았는데 이제는 너무 잘됩니다!!^^

    바쁘신 와중에 도움을 주셔서 너무나 감사 드립니다 ^^IP Address : 211.117.···.228

  51. 작은방 2010/05/10 05:14

    앗...저도 1.8.3.1로 판올림하고나서 오류가 나서 와봤는데 해결책이 여기 있었네요...
    아마 패키지에 들어있는 버전이 예전꺼인가 봅니다. ^^

    항상 잘 쓰고 있습니다~~~ ^^* 감사합니다~IP Address : 81.200.···.209

  52. im.jidong 2010/10/18 11:54

    저기 위에 mainto님 문제는 PHP 5.3부터 발생하는데, 'JPG Support' 어트리뷰트가 'JPEG Support'로 변경되어서 그런거라네요. 아직 적용되지 않았다면 PHP 버전체크 부분을 넣어주시면 좋겠습니다. 그리고 thumb_engine.php 파일 헤더에 최종수정일이 2005년으로 되어있는 것 같은데 맞나요?IP Address : 142.58.···.16

  53. J.Parker 2010/10/18 15:22

    변경 사항을 반영하지 못했던 문제였었군요. 감사합니다. 엔진 파일에 대해서는 최종수정일이 그러합니다. 엔진이 남의 것이라 수정을 안 하고요. 기타 내부 코드는 보완하고 있습니다.

  54. aprilBriz 2010/10/28 16:30

    버그가 있어서 덧글 남깁니다~
    cv_imagemargin과 sb_imagemargin 값이 CSS에 적용이 안되고 있습니다.
    getThumbStyle() 함수에서 imagemargin은 CSS에 적용이 되는데 위의 두개는 그냥 0px 0px 0px 0px 로 박혀있더라구요;
    확인 부탁드릴게요~IP Address : 118.131.···.167

  55. J.Parker 2010/10/28 17:28

    앗! 확인 못 했습니다. 적용했어야 하는 항목이었습니다. --;
    다시 다운로드 받으셔서 덮어씌우시면 됩니다. 즐거운 저녁 시간 되세요.

    - 다운로드 : http://create74.com/temp/JP_ThumbnailListViewTC_20101028.zip