이미지 추출해서 뿌릴 때, 연산 최적화 방법 > 그누4 질문답변

그누4 질문답변

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

이미지 추출해서 뿌릴 때, 연산 최적화 방법 정보

이미지 추출해서 뿌릴 때, 연산 최적화 방법

본문

게시판에 모든 이미지를 추출해서 25x25 사이즈로 썸네일을 형성해 배경에 뿌리고 있습니다.
모자익 효과를 얻으려고 하는 건데요, 두가지 문제점이 있습니다.

1. 해상도에 따라 화면 오른쪽에 약간의 공간이 남습니다. 25x25사이즈니까 25보다 작은 공간이죠. 남는 공간없이 완전히 채울 방법이 없을까요? 이미지가 짤려도 괜찮습니다.

2. 25x25사이즈로 화면 전체를 채우려다보니까 엄청나게 많은 이미지가 필요한데요, 현재 7,000장을 뿌리고 있습니다. 이게 큰 문젠데요, 버벅댑니다. 이걸 어떻게 최적화해서 부드럽고 가볍게 할 수 없을까요?

첫번째 문제보단 두번째 문제를 해결하고 싶은데요,
지금 뿌리는 방식은 아래와 같습니다.

$pieces = 7000; // number of pictures that are put into the mosaic
$wlist = get_table($bo_table);
$img = get_img_mosaic($wlist, 25, 25, 100);
for($i = 0; $i < $pieces; $i++) echo "<img src=\"{$img[mt_rand(0, count($img)-1)]}\" alt=\"\" />";

function get_img_mosaic($list, $width=25, $height=25, $quality=100) {

        $total_number = 0;
        for($i = 0; $i < count($list); $i++) {
                for($j = 0; $j < count($list[$i]['file']); $j++) {
                        if($list[$i]['file'][$j]['view']) {
                                $src = $list[$i]['file'][$j]['path']."/".$list[$i]['file'][$j]['file'];
                                if(preg_match("/\.(jp[e]?g|gif|png)$/i", $src) && file_exists($src)) {
                                        $img[$total_number++] = thumbnail($src, $width, $height, 0, 1, $quality, 2, '',  $filter, $noimg);
                                }
                        }
                }
        }

        return $img;
}

좋은 방법 없을까요?
어떤 쪽을 공부해봐라 같은 조언도 감사하구요.
아무 지적이나 조언 부탁드립니다.

늦은 밤, 꿀잠자시구요.
  • 복사

댓글 전체

말씀 감사합니다.
그런데, 말씀하신 방향을 제가 제대로 파악했는지 모르겠습니다.
퍼센테이지로 하려면 클라이언트 해상도를 얻어야 할텐데,
그럴려면 아마도 ajax같은 다른 접근이 필요한 것 같은데요,
그 말씀이 맞는지 모르겠습니다.
클라이언트 해상도(비율의 기준)없이는 동일사이즈의 이미지를 얻을 수가 없으니까요.
어이쿠, 의미없는, 이미지 판독도 안되는 사이즈의 이미지를 7천개씩이나...
thumbnail() 함수 호출만 해도 몇십번...
이건 무대뽀의 극치라 할 수 있겠습니다 ㅎㅎ

이미지 갯수를 100개 정도만 해도 모자이크 형태는 충분하지않나요?
위 코드를 페이지 마다 실행되게할 필요는 없지않나요?

1. 첫번째 방법
위 코드를 관리자가 한번 실행해서 출력되어 나온 html코드를 복사해서
별도의 화일로 만든 다음 include 하는 방법이 얼마나 효과가 있을지 모르겠지만 한 번 해보세요
물론 이미지 갯수는 팍 줄이고...

2. 두번째 방법
역시 위 코드를 관리자가 한번 실행해서 배경 썸네일만 출력시킨 후
캡쳐해서 하나의 이미지로 만든 뒤 이것을 배경이미지로 사용해버리면 간단하겠군요
배경이 조금씩 다르게 나오게 하고 싶다면 배경 이미지를 몇개를 더 만들어서
이것을 랜덤하게 출력 시키면 되겠구요
으아, 답변 감사합니다.
안그래도 투박한 방식에 부끄러웠습니다. 하하.

차후에 이 기능을 스킨화 해도 좋을 것 같고, 동적으로 작동시키고 싶어서 두번째 방법은 힘들 것 같구요,

이미지 갯수를 줄여야 대폭 성능개선이 되니까 근본적인 해결은 아니더라도 현재 기능을 구현하는데는 첫번째 방법이 좋은 생각인 것 같아요. 그런데 글 읽으면서 든 궁금증이 하나 있는데요, 처음에 썸네일 생성하고 두번째부터는 이미 썸네일이 존재한다면 연산을 재반복하지 않으리라 추측했었는데, 그게 아닌가봐요?
썸네일 만드는 함수는 보통 이미 썸네일이 존재하면 다시 만들지않습니다
그렇더라고하더라도 만들어진 썸네일이 있는지 계속 검사는 해야하니까요
두번째 방법은 큰 이미지로 만드는 것 자체를 일정 시간을 주기로 갱신하도록하고
GD를 이용해서 서버에서 만들도록 하는 방법도 있습니다
예를들어 1주일에 한번만 만들게 한다던지..
© SIRSOFT
현재 페이지 제일 처음으로