에디터로 올린 이미지도 썸네일 생성하기
JuuS
11년 전
조회 6,980
아래코드로 된 가로세로 짤리는 썸네일 생성 갤러리 게시판을 사용하고 있습니다.
에디터로 올린 이미지도 썸네일을 생성하도록 하고싶은데 어던 코드를 넣어야 할지 도통 감이 안와 질문 남김니다.
가로 세로가 지정한 크기대로 잘려서 썸네일 생성되는게 맘에들어 사용중인데 에디터로 올린 이미지가 말썽이네요
list.skin.php 썸네일 관련 반복 부분
</div>
<div><div> <? </div>
<div> for ($i=0; $i<count($list); $i++) { </div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span></div>
<div> $style = "";</div>
<div> $list[$i][subject] = str_replace(" "," ",$list[$i][subject]);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$image = $list[$i][file][0][file];</div>
<div>
</div>
<div> $comment_cnt = "";</div>
<div> if ($list[$i][comment_cnt]) </div>
<div> $comment_cnt = " <a href=\"{$list[$i][comment_href]}\"><span class='commentFont'>{$list[$i][comment_cnt]}</span></a>";</div>
<div>
</div>
<div> $list[$i][name] = preg_replace("/<img /", "<img style='display:none;' ", $list[$i][name]);</div>
<div> $list[$i][name] = preg_replace("/> <span/", "><span", $list[$i][name]);</div>
<div> $list[$i][name] = preg_replace("/class='member'/", "", $list[$i][name]);</div>
<div>?></div>
<div> <div class="view view-third"></div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span><a href='<?=$list[$i][href]?>'><?=makeThumbs($g4[path]."/data/file/$bo_table", $list[$i][file][0][file], $board[bo_1], $board[bo_2])?></a></div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span><div class="mask"></div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span><a href='<?=$list[$i][href]?>'><h2><?=$list[$i][subject]?></h2></a></div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span><a href='<?=$list[$i][href]?>'><p><?=$list[$i][wr_content]?></p></a></div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span></div></div>
<div><? if ($is_checkbox) echo "<input type=checkbox name=chk_wr_id[] value='{$list[$i][wr_id]}'>";?></div>
<div></div></div>
<div><? } ?></div></div>
<div>
skin.lib.php
</div>
<div><div><?</div>
<div>if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가 </div>
<div>
</div>
<div>if (!function_exists("makeThumbs")) {</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>function makeThumbs($oriPath, $oriFileName, $thmWidth="", $thmHeight="", $thmAlt="") {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>global $g4, $board_skin_path;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$errorFilePrt = "<img src=\"".$board_skin_path."/img/noimage.gif\" border=\"0\" alt=\"이미지 없음\" />";</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriFile = $oriPath . "/" . $oriFileName;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (is_file($oriFile) == false) return $errorFilePrt; // 원본 부재</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmPath = $oriPath . "/thumbs";</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmFile = $thmPath . "/" . $oriFileName;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriSize = getimagesize($oriFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriWidth = $oriSize[0];</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriHeight = $oriSize[1];</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriType = $oriSize[2];</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($oriType > 3) return $errorFilePrt; // 원본 이미지 타입 오류</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriRate = $oriWidth / $oriHeight;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($thmWidth == "" && $thmHeight == "") return $errorFilePrt; // 썸네일 사이즈 미지정</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($thmWidth == "") $thmWidth = $thmHeight * $oriRate;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($thmHeight == "") $thmHeight = $thmWidth / $oriRate;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$widthRate = $thmWidth / $oriWidth;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$heightRate = $thmHeight / $oriHeight;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriFilePrt = "<img src=\"".$oriFile."\" width=\"".$oriWidth."\" height=\"".$oriHeight."\" border=\"0\" alt=\"".$thmAlt."\" />";</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($widthRate >= 1 && $heightRate >= 1) return $oriFilePrt; // 리사이징 불필요</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (file_exists($thmFile)) { // 썸네일 유무</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$fp = fopen($thmFile, "r");</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$fstat = fstat($fp);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmFileTime = $fstat['ctime'];</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>fclose($fp);</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$fp = fopen($oriFile, "r");</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$fstat = fstat($fp);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$oriFileTime = $fstat['ctime'];</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>fclose($fp);</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (is_dir($oriPath . "/thumbs/")) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$array1 = $array2 = array();</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($dh = opendir($oriPath . "/thumbs/")) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>while (($file = readdir($dh)) !== false) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$array1[] = $file;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>closedir($dh);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($dh = opendir($oriPath . "/")) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>while (($file = readdir($dh)) !== false) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$array2[] = $file;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>closedir($dh);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$array_diff = array_diff($array1, $array2);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>foreach ($array_diff as $k => $v) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (is_file($oriPath . "/thumbs/" . $v)) @unlink($oriPath . "/thumbs/" . $v);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmFileSize = getimagesize($thmFile);</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($thmWidth == $thmFileSize[0] && $thmHeight == $thmFileSize[1]) { // 썸네일 갱신 불필요</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($thmFileTime > $oriFileTime) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmSize = getimagesize($thmFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmFilePrt = "<img src=\"".$thmFile."\" width=\"".$thmSize[0]."\" height=\"".$thmSize[1]."\" border=\"0\" alt=\"".$thmAlt."\" />";</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>return $thmFilePrt;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>@unlink($thmFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>@mkdir($thmPath);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>@chmod($thmPath, 0707);</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($widthRate < $heightRate) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempWidth = (int)($oriWidth * $heightRate);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempHeight = $thmHeight;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>} else {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempWidth = $thmWidth;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempHeight = (int)($oriHeight * $widthRate);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($tempWidth == "") $tempWidth = $thmWidth;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($tempHeight == "") $tempHeight = $thmHeight;</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>switch($oriType) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>case(1) :</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if(function_exists('imagecreateFromGif')) $tempImage = imagecreateFromGif($oriFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>case(2) :</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if(function_exists('imagecreateFromJpeg')) $tempImage = imagecreateFromJpeg($oriFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>case(3) :</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if(function_exists('imagecreateFromPng')) $tempImage = imagecreateFromPng($oriFile);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>break;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if ($tempImage) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (function_exists('imagecreatetruecolor')) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempCanvas = imagecreatetruecolor($thmWidth, $thmHeight);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>} else {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$tempCanvas = imagecreate($thmWidth, $thmHeight);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>if (function_exists('imagecopyresampled')) {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>imagecopyresampled($tempCanvas, $tempImage, 0, 0, 0, 0, $tempWidth, $tempHeight, ImageSX($tempImage), ImageSY($tempImage));</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>} else {</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>imagecopyresized($tempCanvas, $tempImage, 0, 0, 0, 0, $tempWidth, $tempHeight, ImageSX($tempImage), ImageSY($tempImage));</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>ImageDestroy($tempImage);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>ImageJpeg($tempCanvas, $thmFile, 100);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>ImageDestroy($tempCanvas);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>unset($tempImage, $tempCanvas);</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>$thmFilePrt = "<img src=\"{$thmFile}\" width=\"{$thmWidth}\" height=\"{$thmHeight}\" border=\"0\" alt=\"{$thmAlt}\" />";</div>
<div>
</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>return $thmFilePrt;</div>
<div><span class="Apple-tab-span" style="white-space: pre"> </span>}</div>
<div>}</div>
<div>?></div></div>
<div>
</div>
<div>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인