테스트 사이트 - 개발 중인 베타 버전입니다

썸네일 만드는 함수(원격이미지포함, 리사이즈, 크롭, 워터마크)

· 13년 전 · 2905 · 30
이전에 강좌로 하던 함수를 모닝님의 요청으로 조금 수정햇습니다.

원격이미지의 썸네일 만드는 기능도 포함하였습니다.

해당 라이브러리를 필요한 곳에 인클루드 하시고.

create_thumbnail('http://apmusers.com/tt/attach/1/1267047665.jpg', 'a.png', 50); 나

create_thumbnail('./attach/1/1267047665.jpg', 'a.png', 50); 등로 사용하면 됩니다.

자세한 옵션이나 설명은 라이브러리 파일내에 포함되어있습니다.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

댓글 30개

13년 전
감사합니다! 1빠 추천
감사합니다 저도 추천!
큰선물 감사드립니다.
바쁘신 중에도 저의 메일질문에 꼬박고박 답변해주셔서 얼마나 감사한 지 모르겠습니다.

하시는 일에 큰 성취가 있기를 빕니다.
좋은 자료 감사합니다....^^
에구... 이번버전은 돌아가기는 하지만,
확인하고싶은 것이 있습니다.


function extract_img($src) {
$re = '/src[ =]+[\'"]([^\'"]+\.(?:gif|jpg|jpeg|png|bmp))[\'"]/i';
preg_match_all($re, $src, &$match, PREG_PATTERN_ORDER);
return $match[1];
}

//본문에 링크한 이미지 레코드별 배열
$dest_link[] = array( 'wr_id' => $list[$i]['wr_id'], 'url' => extract_img($list[$i]['wr_content']));
//print_r2($dest_link[$i]);
$url = $dest_link[$i]['url']['0'];//첫번째 링크된 이미지, 두번째는 $dest_link[$i]['url'][1]
-------------
위와 같은 방식으로 에딛그림(웹그림)을 불러왔는데,
이방식을 그대로 사용해야 하는가요?

아니면 여기 썸네일 소스에 준비된 다른 방식이 있는가요?
네 그렇게 사용하시면 됩니다.

이미지 url을 추출해서 쓰심 됩니다.
사용방법은 기존거와 같습니다.
단지 첫번째 변수가 url 도 쓸수 잇고 로컬 경로도 쓸수 잇다는 점만 다릅니다.
유창화님의 소스에 내장된 다른 방식은 없는가요?
이왕이면 일관되게 사용하고 싶어서요
음......

경우에 따라 쓰기 나름이라서.........
공통적인 함수를 만들기는 애매합니다.

그냥 필요에 따라 모닝님 처럼 적당히 만들어서 사용해야 합니다.


예를 한가지 든다면.......
리스트에서 내용 사용으로 체크되어있는
리스트 스킨에서 사용한다고 가정하고

첨부 파일에 이미지가 있음 그것으로 대표 썸네일 이미지로 만들고
본문 내용중에 이미지 태그가 있으면 이미지 주소를 뽑아와서 그것으로
대표 썸네일 이미지를 만들겟다고 한다면.......



$save_w = 150;//저장될 썸네일 너비
$save_h = 0;//너비에 따라 높이 자동 조절

$options = Array();
$options['save_force'] = 1;
$options['crop_use'] = 0;

$path_save_dir = $g4['path'] . '/data/file/' . $bo_table . '/thumbnail;
if (!is_dir($path_save_dir)) {

@mkdir($path_save_dir);
@chmod($path_save_dir, 0777);
}

for ($i=0; $i<count($list); $i++) {

$list[$i]['thumbnail'] = '';
$path_save_file = $path_save_dir . '/list_' . $list[$i]['wr_id'] . '.png';

if (!is_file($path_save_file)) {

foreach($list[$i]['file'] as $k => $v) {

if (preg_match("`\.(gif|jpe?g|png)$`i", $v[source])) {

if (create_thumbnail($v['file'], $path_save_file, $save_w, $save_h, $options)){

$list[$i]['thumbnail'] = $path_save_file;

break;
}
}
}

if (empty($list[$i]['thumbnail']) && !empty($list[$i]['wr_content']) && preg_match("`src\s*=([^>]+\.(gif|jpe?g|png))('|\"|\s|>)`iU", $list[$i]['wr_content'], $m)) {

$m[1] = preg_replace("`[\s\"']+`", '', $m[1]);

if (!empty($m[1])) {

if (create_thumbnail($m[1], $path_save_file, $save_w, $save_h, $options)){

$list[$i]['thumbnail'] = $path_save_file;
}
}
}
}
else {

$list[$i]['thumbnail'] = $path_save_file;
}



........

if (!empty($list[$i]['thumbnail'])) echo "<img src='" . $list[$i]['thumbnail'] . "'>";

........



이런식으로 하면 되지 않을까 싶네요.

암튼 어떻게 사용하는가는 사용자의 몫인것 같습니다.
if (empty($list[$i]['thumbnail']) && !empty($list[$i]['wr_content']) && preg_match("`src\s*=([^>]+\.(gif|jpe?g|png))('|\"|\s|>)`iU", $list[$i]['wr_content'], $m)) {

$m[1] = preg_replace("`[\s\"']+`", '', $m[1]);

if (!empty($m[1])) {

if (create_thumbnail($m[1], $path_save_file, $save_w, $save_h, $options)){

$list[$i]['thumbnail'] = $path_save_file;
}
}
}
---------------
이부분이 웹그림부분이지요?
아예 이것을 님의 자료 안에 집어넣을 수는 없는가요?

사용자 입장에서 이것도 신경안쓰고,
if ($m[1]) { create_thumbnail($m[1], $path_save_file, $save_w, $save_h, $options); }
만 하면 되게요...
위에서 말햇듯이
그런것은 포함하기 힘듭니다.
그때 그때 상황에 따라 다릅니다.

사용자가 맞춰서 써야겟지요.

그리고 이미지 주소를 이미 파싱한 경우에는 모닝님
처럼 쓰면 되죠

게시글 목록

번호 제목
12487
12486
380
12484
12483
376
12482
12481
12479
12478
12477
12476
12475
12474
12473
12472
12471
12470
12469
371
12468
12467
12466
12465
12464