몇초후에 사진이 바뀌게 할려고 하는데요 도와주실분~~ > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

몇초후에 사진이 바뀌게 할려고 하는데요 도와주실분~~ 정보

몇초후에 사진이 바뀌게 할려고 하는데요 도와주실분~~

본문

<?

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



// Attempt to calibrate the parameters to Photoshop:
if ($amount > 500) $amount = 500;
$amount = $amount * 0.016;
if ($radius > 47) $radius = 47;
$radius = $radius * 2;
if ($threshold > 300) $threshold = 300;

$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, 47); // 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, 47); // 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, 240 ";
$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="530" height="370" align="center" valign="top" bgcolor=white>
 
      <div style="border:1px solid #D3D3D3; height:370px; width:530px; background-color:#FFFFFF; overflow:hidden" align="center" id="loadarea"><img src="<?=$view_one?>"  border="0"></div>
</td>

</tr>
<tr>
<td colspan="5" height='25'></td>
</tr>
<tr>
<!--작은사진목록-->
<td bgcolor="#ffffff" style="padding:0;" width="400"  align="center" valign="top">
           
<table border="0" cellpadding="0" cellspacing="0" width="100%" valign='top' align='center'>
<tr>
<td style="border:solid 1px #D3D3D3; background-color:#E5E5E5; " valign='absmiddle' align='center'>

<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, 240 ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {

if($i != 0 && $i % 10 == 0) echo "</tr><tr><td colspan='3' style='height:7px;'></td></tr><tr>";
    if($i % 10 != 0) echo "<td width=10></td>";
$view_w = 500; //썸네일 가로사이즈
//$view_h = 300; //썸네일 세로사이즈
$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 = 540; //가로 사이즈 고정

//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 = 47; //썸네일 가로사이즈
$view_h = 40; //썸네일 세로사이즈
$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 = 47;

//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);
imagepng($dst, $thumb_path.'/'.$filename, $sch_q);
}
chmod($thumb_path.'/'.$filename, 0707);
}

}
/*

if(!$imgpage)$imgpage = 1; //파라미터가 없을땐 1페이지를 보여준다
$imgpaging = 10 * $imgpage; //몇페이지를 보여줄지 연산
for($i==$imgpaging-10; $i<$imgpage; $i++){//$imgpaging-10 번 째 이미지부터 $imgpaging번째까지
$thumb  =  $thumb[$i]; //$i번째 이미지 */

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

  <td style="border:solid 0px #D0D0D0;height:40px;width:49px;padding:0;text-align:center;" align="center" valign='middle' width=49 height=40>
<a rel="enlargeimage::mouseover" rev="loadarea" href="<?=$thumb_path2?>/<?=$filename?>"><img src="<?=$thumb?>" align="center" valign='middle' width=49 style="border-width:0px; text-align:center;" onmouseover="stopa();" /></a>
  </td>
  <td width='30px'>&nbsp;</td>

<?
//onMouseOut="bgChange('clear');"
}
}
/*}*/
?>



</td>
</tr>
</table>
</td>
</tr>
</table>
<!--작은사진목록-->


>>> 전체소스 올렸습니다~~ 쿠츠님 도와주세요~~
  • 복사

댓글 전체

헉!! @@~
이해가 안가요~?
위코드 보면 for문 돌려서 썸네일 만들어 뿌려주는 코드 같은데, 출력부분은 하나의 이미지만 출력하게
되어 있습니다.
출력 부분이 2개 이상이면 두번째 이미지를 5초후에 뿌려준다는 것으로 질문을 이해했는데, 실제 출력부분 보니 이미지가 하나네요? 제가 질문이해를 잘못한건지..
스킨인거 같은데 현재 오류없이 잘 작동하고 있고, 이미지 다음으로 넘기는 부분만 안된다면 스킨 소스 전체를 보내주세요..
흘 이거 무지 복잡하게 구현해 놓으셨더군요..
단순 스킨에서 변경인줄 알고, 말씀드린거였는데, 낚였네요 ^^;

어째건 보내주신 것으로 최소한의 코드로 수정할 수 있도록 해봤습니다.
view.skin.php에서 horizontal_view.php include한 아래(테이블 태그 닫은 바로 아래)에 스크립트 넣으시고요.

<script type="text/javascript">
$(document).ready(function(){
imgSlider(); // slide start
$('#loadarea').bind('mouseover', function(){
clearInterval(timer); // slide stop
});
$('#loadarea').bind('mouseout', function(){
timer = setInterval(imgSlider, speed); // slide start
});
});

var speed = 2000;
var timer = setInterval(imgSlider, speed);
var thumArticles = $('#thumList li');
var length = thumArticles.length;
var index = 0;

function imgSlider(){
thumArticles.eq(index).find('img').trigger('mouseover');
index++;
if(index >= length){
index = 0
}
}
</script>

horizontal_view.php에 썸네일 출력 테이블을 제거하시고, UL 형태로 변경합니다.
썸네일 출력부분의 td 태그를 삭제하고 아래와 같은 li태그로 변경합니다.
<li style="float:left;list-style-type:none;"><a rel="enlargeimage::mouseover" rev="loadarea" href="<?=$thumb_path2?>/<?=$filename?>"><img src="<?=$thumb?>" align="center" valign='middle' width=49 style="border-width:0px; text-align:center;" /></a></li>

이렇게 한 이유는 jQuery로 하면 최소한의 수정으로 적용이 가능하기 때문입니다.

그리고 메일에 주신 이미지 페이징 부분은 DB에서 페이지 새로 로딩해서 가져오는 법과 미리 첨부된 50개 이미지 전체를 불러 놓고 javascript에서 처리하시면 됩니다.
jquery로 하시면 단 몇줄이면 되고, show, hide 하시면 될 것 같네요.

파일은 쪽지로 보내드리겠습니다
© SIRSOFT
현재 페이지 제일 처음으로