죄송해요.포인트부족으로 여기에 급한 질문 올립니다. > 자유게시판

자유게시판

죄송해요.포인트부족으로 여기에 급한 질문 올립니다. 정보

죄송해요.포인트부족으로 여기에 급한 질문 올립니다.

본문

고수님들....도와주세요...
지난주부터 아무리 해결하려 노력해봐도 안되네요..
제가 명량폐인님 다중이미지 갤러리를 사용하고 있는데요... 수정시 이미지 개별삭제 후 틀이 깨져버리는 현상이 발생되어서요...

위에것이 수정하지 않은 정상적인 상태일때 보여지는 화면입니다..

그리고 아래것은 수정작업(중간 이미지 삭제시)후 보여지는 화면입니다.


보시는 것 처럼 틀이 깨져버려서...  이것을 해결할 수 있는 방법이 있을런지요?
아무리 머리를 싸매고 해봐도 답이 안나옵니다.
정말정말 아시는 분은 도와주세요...

제발 꼭 좀 도와주세요... 플리이이이이이이이즈~~~~~

참고로...

<delete.skin.php>

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.

$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';
@unlink("$thumb_path/$wr_id");
?>

<write_update.skin.php>

<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가

// 자신만의 코드를 넣어주세요.

//print_r2($_FILES); exit;

$data_path = $g4[path]."/data/file/$bo_table";
$thumb_path = $data_path.'/thumb';

if ($_FILES[bf_file][name][0])
{
    $row = sql_fetch(" select * from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' and bf_no = '0' ");

    $file = $data_path .'/'. $row[bf_file];
    if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file)) {
        $size = getimagesize($file);
        if ($size[2] == 1)
            $src = imagecreatefromgif($file);
        else if ($size[2] == 2)
            $src = imagecreatefromjpeg($file);
        else if ($size[2] == 3)
            $src = imagecreatefrompng($file);
        else
            break;

        $rate = $board[bo_1] / $size[0];
        $height = (int)($size[1] * $rate);

        @unlink($thumb_path.'/'.$wr_id);
        // 계산된 높이가 설정된 높이보다 작다면
        if ($height < $board[bo_2])
            $dst = imagecreatetruecolor($board[bo_1], $height);
        else
            $dst = imagecreatetruecolor($board[bo_1], $board[bo_2]);
        imagecopyresampled($dst, $src, 0, 0, 0, 0, $board[bo_1], $height, $size[0], $size[1]);
        imagejpeg($dst, $thumb_path.'/'.$wr_id, $board[bo_3]);
        chmod($thumb_path.'/'.$wr_id, 0606);
    }
}
?>

<horizontal_view.php>

<?

 function UnsharpMask($img, $amount, $radius, $threshold) {
 

 
 // Attempt to calibrate the parameters to Photoshop:
 if ($amount > 500) $amount = 500;
 $amount = $amount * 0.016;
 if ($radius > 50) $radius = 50;
 $radius = $radius * 2;
 if ($threshold > 255) $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 = $img;
 $imgCanvas2 = $img;
 $imgBlur = imagecreatetruecolor($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
  }
 $imgCanvas = $imgBlur; 
  
 // 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;
   
   if (($rOrig != $rNew) || ($gOrig != $gNew) || ($bOrig != $bNew))
    {
    $pixCol = ImageColorAllocate($img, $rNew, $gNew, $bNew);
    ImageSetPixel($img, $x, $y, $pixCol);
    }
   }
  }
 return $img;
 }

?>
<?
 //썸네일 코드 시작
 $data_path = $g4['path'] . "/data/file/{$bo_table}";//라이브러리 파일 참조
 $thumb_path = $data_path . '/thumbOpen';
 $thumb_path2 = $data_path . '/thumbOpen2';
?>

 <SCRIPT LANGUAGE='JavaScript'>
  // 이미지뷰어
  <!--
   var win= null;
   function View_Open(img, w, h)
   {
    var winl = (screen.width-w)/2;
    var wint = (screen.height-h)/3;
    var settings  ='height='+h+',';
     settings +='width='+w+',';
     settings +='top='+wint+',';
     settings +='left='+winl+',';
     settings +='scrollbars=yes,';
     settings +='resizable=yes,';
     settings +='status=no';

    win=window.open("","newWindow",settings);
    win.document.open();
    win.document.write ("<html><head><title>원본 이미지 보기</title></head>");
    win.document.write ("<script>function init(){window.resizeBy(document.all.pop_img.width-document.body.clientWidth, document.all.pop_img.height-document.body.clientHeight+10);}</script>");
    win.document.write ("<body bgcolor=white topmargin=0 leftmargin=0 marginwidth=0 marginheight=0 oncontextmenu='return false' ondragstart='return false' onkeydown='return false' onselectstart='return false' onload='init();'>");
    win.document.write ("<img src='"+img+"' border=0 onclick='window.close();' style='cursor:hand' title='클릭하면 닫혀요' id='pop_img'>");
    win.document.write ("</body></html>");
    win.document.close();
   }
  //-->
  </SCRIPT>

  <SCRIPT LANGUAGE="JavaScript">
  <!--
  image_directory = "";   //배경이미지 경로
  clear = new Image();  clear.src = image_directory + "./img/blank.gif";
  <?
  //파일 뽑기
  $sql2 = " select bf_file from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no limit 0, 24 ";
  $result2 = sql_query($sql2);
  for ($j=0; $row2 = sql_fetch_array($result2); $j++) {
   if($j==0) $view_one = "{$thumb_path2}/{$row2['bf_file']}";
  }
  ?>
  

  //  -->
  </SCRIPT>

  <table cellspacing="0" cellpadding="0" border="0" align="left">
    <tr height="5">
    <td colspan="5"></td>
   </tr>
   
   <tr>
   
   <td  style="border:0px solid #D4DBE1;" width="580" align="center" valign="top" bgcolor=white  >
     <div style='width:580px;position:relative; ' align="center" id="loadarea" ><img src="<?=$view_one?>"   border="0"></div>
   </td>
   
   </tr>
   <tr>
   <!--작은사진목록--> 
   <td bgcolor="#ffffff" style="padding:4 0 4 0px;" width="580" align="center" valign="top" >
    <table border="0" cellpadding="0" cellspacing="0" width="100%" valign='top'>
    <tr>
     <td style="border:solid 1px #D3D3D3; background-color:#E5E5E5; " valign='top'>
       
       <tr>
     
        <?
       //파일 뽑기
       $sql = " select bf_file, bf_source from $g4[board_file_table] where bo_table = '$bo_table' and wr_id = '$wr_id' order by bf_no limit 0, 24 ";
       $result = sql_query($sql);
       for ($i=0; $row = sql_fetch_array($result); $i++) {

        if($i != 0 && $i % 6 == 0) echo "</tr><tr><td colspan='3' style='height:7px;'></td></tr><tr>";
           if($i % 6 != 0) echo "<td width=10></td>";
        $view_w = 580; //썸네일 가로사이즈
        $view_h = 400; //썸네일 세로사이즈
        $sch_q = 100; //썸네일 퀼리티

        if (!is_dir($thumb_path2)) {
         @mkdir($thumb_path2, 0707);
         @chmod($thumb_path2, 0707);
         
        }

        if (!is_dir($thumb_path)) {
         @mkdir($thumb_path, 0707);
         @chmod($thumb_path, 0707);
         
        }

        $filename = $row[bf_file]; //파일명
        $thumb2 = $thumb_path2.'/'.$filename; //썸네일

        if (!file_exists($thumb2)) { //view 용 이미지 생성

         $file = $data_path.'/'.$filename; //원본
         if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($file)) {
          $size = getimagesize($file);
          if ($size[2] == 1)
           $src = imagecreatefromgif($file);
          else if ($size[2] == 2)
           $src = imagecreatefromjpeg($file);
          else if ($size[2] == 3)
           $src = imagecreatefrompng($file);
          else
           continue;

          $rate = $view_h / $size[1];
          //$width = (int)($size[0] * $rate);
          $width = 580; //가로 사이즈 고정
          
          //echo "rate : $rate ,width : $width, $height : $board[bo_2] <br>";
          if($width <= $view_w) { //width가 지정된 사이즈보다 작을경우 rate 비율로 썸네일 생성
           $dst = imagecreatetruecolor($width, $view_h);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $view_h, $size[0], $size[1]);
           imagejpeg($dst, $thumb_path2.'/'.$filename, $sch_q);
          } else {
           $rate = $view_w / $size[0];
           $height = (int)($size[1] * $rate);

           $dst = imagecreatetruecolor($view_w, $height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $view_w, $height, $size[0], $size[1]);
           imagejpeg($dst, $thumb_path2.'/'.$filename, $sch_q);
          }
          chmod($thumb_path2.'/'.$filename, 0707);
         }

        }
        
        $view_w = 88; //썸네일 가로사이즈
        $view_h = 66; //썸네일 세로사이즈
        $thumb = $thumb_path.'/'.$filename; //썸네일
        if (!file_exists($thumb)) { //기본 썸네일

         $file = $data_path.'/'.$filename; //원본
         if (preg_match("/\.(jp[e]?g|gif|png)$/i", $file) && file_exists($file)) {
          $size = getimagesize($file);
          if ($size[2] == 1)
           $src = imagecreatefromgif($file);
          else if ($size[2] == 2)
           $src = imagecreatefromjpeg($file);
          else if ($size[2] == 3)
           $src = imagecreatefrompng($file);
          else
           continue;

          $rate = $view_h / $size[1];
          //$width = (int)($size[0] * $rate);
          $width = 88;
          
          //echo "rate : $rate ,width : $width, $height : $board[bo_2] <br>";
          if($width <= $view_w) { //width가 지정된 사이즈보다 작을경우 rate 비율로 썸네일 생성
           $dst = imagecreatetruecolor($width, $view_h);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $width, $view_h, $size[0], $size[1]);
           $dst = UnsharpMask($dst, 80, 0.5, 3);
           imagejpeg($dst, $thumb_path.'/'.$filename, $sch_q);
          } else {
           $rate = $view_w / $size[0];
           $height = (int)($size[1] * $rate);

           $dst = imagecreatetruecolor($view_w, $height);
           imagecopyresampled($dst, $src, 0, 0, 0, 0, $view_w, $height, $size[0], $size[1]);
           $dst = UnsharpMask($dst, 80, 0.5, 3);
           imagejpeg($dst, $thumb_path.'/'.$filename, $sch_q);
          }
          chmod($thumb_path.'/'.$filename, 0707);
         }

        }

        if (file_exists($thumb) && $filename) {
        ?>

          <td style="border:solid 1px #D0D0D0;height:66px;width:88px;" align='left' width=88 height=66>
         <a rel="enlargeimage::mouseover" rev="loadarea" href="<?=$thumb_path2?>/<?=$filename?>"><img src="<?=$thumb?>" style="border-width:0px;" /></a>
          </td>
         
        <?
        //onMouseOut="bgChange('clear');"
         }
        }
        ?>

        <? for($c = 0; $c < (6 - ($i-1 % 6)); $c ++) echo "<td width=10></td><td width=88 height=66></td>"; ?>
        </tr>
        </table>
       </td>
      </tr>
      </table>
     <!--작은사진목록-->


입니다....

파일로 첨부하려 했으나 여긴 파일첨부가 안되네요...
다시한번 부탁드리겠습니다...

추천
0

댓글 3개

문제있는곳의 링크를 주시면 파악하는데 도움이 될텐데요...

도움이 되실지 모르겠지만 오래전에 작업해둔 뷰스킨하나 메일로 보내드릴께요.
거기 보시면 모든 첨부파일에 대한 썸네일 생성 루틴이 들어있습니다.
또한 첨부파일가운데 중간파일이 삭제되더라도 나머지 파일이 순차적으로 로드되게 코딩되어 있습니다.
소스 주석에서 step1~step3 부분의 배열을 참고하시면 조금이나마 도움이 되실겁니다.
정말 죄송해요... 여기에 글 올려서요...
너무 급하고 답이 안나와서 올리게 되었어요...

불쾌하셨다면 정말 죄송합니다.

그리고 플록 님 답변 너무 감사드립니다....
전체 199,665 |RSS
자유게시판 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT