페이지를 캡쳐해서 따오는 링크 따오기™ 게시판 > 그누보드5 스킨

그누보드5 스킨

좋은 댓글과 좋아요는 제작자에게 큰힘이 됩니다.

페이지를 캡쳐해서 따오는 링크 따오기™ 게시판 정보

게시판 페이지를 캡쳐해서 따오는 링크 따오기™ 게시판

첨부파일

thaogi_link.zip (19.6K) 370회 다운로드 2016-09-29 15:04:19

본문

링크를 입력하면 해당 페이지를 그대로 캡쳐해서 썸네일로 저장해서 사용하는 게시판입니다.

페이스북처럼 링크의 내용을 따오는 게시판은 http://sir.kr/g5_skin/11660 를 이용하시면 되고, 이 스킨은 사이트의 내용을 따오는 것이 아니라 페이지를 이미지로 캡쳐하는 스킨입니다.

write_update.head.skin.php 에서 이미지를 캡쳐해서 저장하고 이미지 주소를 wr_1, wr_2에 저장합니다. (기본세팅, 링크 두개 사용시)

리스트에서 게시물의 첨부 이미지가 없는 경우 wr_1이 있는지 확인해서 내용이 있으면 div의 배경 이미지 형태로 보여줍니다. (크기에 맞게 썸네일로 따로 만들기 귀찮아서...)

게시물 보기에서는 링크 리스트에 조그맣게 썸네일이 보이도록 했습니다.

이외 수정 사항은 없습니다.

테스트 게시판 주소는 http://btstocking.mooo.com/bbs/board.php?bo_table=thaogi_link 입니다.

아이디 / 비번 : test / test

* 테스트 게시판은 테스트 이외의 용도로는 사용하지 마십시오.
추천
13

댓글 전체

1. 스킨 폴더 안의 write_update.head.php의 내용을 싹 다 지우고 아래와 같이 바꿔주세요.


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

$screenshotlayer_key = "key를 여기다 넣으세요";


function link_image_thaogi($url=""){
	
	if(empty($url)) return false;
	
	$url_info = json_decode(file_get_contents("https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url=".$url."&screenshot=true"), true);
	
	$image['data'] 			= str_replace(array("_", "-"), array("/", "+"), $url_info['screenshot']['data']);//encoded
	$image['mime'] 			= $url_info['screenshot']['mime_type'];
	$image['decode'] 		= base64_decode($image['data']);
	
	if(preg_match("/image\/(jpe?g|gif|png)+/i", $image['mime'], $match))
	$extn = ".".str_replace("jpeg", "jpg", $match[1]);
	else
		$extn = "";

	$ym = date('ym', G5_SERVER_TIME);

	$data_dir = G5_DATA_PATH.'/editor/'.$ym;
	$data_url = G5_DATA_URL.'/editor/'.$ym;

	@mkdir($data_dir, G5_DIR_PERMISSION);
	@chmod($data_dir, G5_DIR_PERMISSION);

	$file_name = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'])).'_'.get_microtime().$extn;
	$save_dir = sprintf('%s/%s', $data_dir, $file_name);
	$save_url = sprintf('%s/%s', $data_url, $file_name);

	$ifp = fopen($save_dir, "wb"); 
	fwrite($ifp, $image['decode']); 
	fclose($ifp);

	chmod($save_dir, G5_FILE_PERMISSION);
		
	
	return $save_url;	
	
}

function screenshotlayer_thaogi($url="", $screenshotlayer_key="") {
	
	if(empty($screenshotlayer_key) || empty($url)) return false;
	
	$image_source = file_get_contents("http://api.screenshotlayer.com/api/capture?access_key=".$screenshotlayer_key."&url=".$url."&viewport=1440x900&width=728");	
	//die($image_source);
	$data_dir = G5_DATA_PATH.'/editor/'.$ym;
	$data_url = G5_DATA_URL.'/editor/'.$ym;

	@mkdir($data_dir, G5_DIR_PERMISSION);
	@chmod($data_dir, G5_DIR_PERMISSION);

	$file_name = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'])).'_'.get_microtime();//일단 확장자 없이 저장 -> 이미지 여부 확인 후 확장자 붙이기
	$save_dir = sprintf('%s/%s', $data_dir, $file_name);
	$save_url = sprintf('%s/%s', $data_url, $file_name);
	
	$ifp = fopen($save_dir, "wb"); 
	fwrite($ifp, $image_source); 
	fclose($ifp);
	
	chmod($save_dir, G5_FILE_PERMISSION);
	
	// 이미지인지 여부를 나중에 확인하는 이유는 먼저 확인하고 저장을 하면 screenshot을 두번 사용해야 하므로...
	if(!$image = getimagesize($save_dir)) {
		unlink($save_dir);// 이미지가 아니면 삭제
		return false;
	}
	
	if(preg_match("/image\/(jpe?g|gif|png)+/i", $image['mime'], $match))
	$extn = ".".str_replace("jpeg", "jpg", $match[1]);

	@rename($save_dir, $save_dir.$extn);
	
	return $save_url.$extn;
}

$prepend_content = "";

for ($i=1; $i<=G5_LINK_COUNT; $i++) {
	
	${'wr_link'.$i} = set_http(${'wr_link'.$i});
	
	if(isset(${'wr_link'.$i}) && !empty(${'wr_link'.$i}) && ${'wr_link'.$i} != $write['wr_link'.$i]) {
		
		if($link_image = screenshotlayer_thaogi(${'wr_link'.$i}, $screenshotlayer_key)) {
			
			${'wr_'.$i} = $link_image;
						
			$prepend_content .= '<div style="margin-bottom: 30px; text-align: center;"><p style="border: 1px solid #f1f1f1;"><img src="'.$link_image.'" width="726"></p><p style="margin-top: 10px;">'.${'wr_link'.$i}.'</p></div>';
			
			
		}
		//if($link_image = link_image_thaogi(${'wr_link'.$i})) ${'wr_'.$i} = $link_image;
		
	}		

}

if(!$wr_1) $wr_1 = $write['wr_1'];
if(!$wr_2) $wr_2 = $write['wr_2'];
if($html == "html1")$wr_content = $prepend_content.$wr_content;
2. https://screenshotlayer.com/ 에 가셔서 회원가입 하시고 key 를 받아서 write_update.head.php의 key를 "여기다 넣으세요"에 넣으세요.


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

$screenshotlayer_key = "key를 여기다 넣으세요";
원래대로 쓰시려면 아래와 같이 주석처리를 반대로 해주시면 됩니다.


/*
if($link_image = screenshotlayer_thaogi(${'wr_link'.$i}, $screenshotlayer_key)) {
			
			${'wr_'.$i} = $link_image;
						
			$prepend_content .= '<div style="padding: 20px 0px 0px; border: 1px solid #f1f1f1; margin-bottom: 30px; text-align: center;"><p><img src="'.$link_image.'"></p><p style="margin-top: 20px; background-color: #f1f1f1; padding: 20px;">'.${'wr_link'.$i}.'</p></div>';
			
			
		}
*/
		if($link_image = link_image_thaogi(${'wr_link'.$i})) ${'wr_'.$i} = $link_image;
답변 감사합니다 근데 알려주신것뿐 아니라 올려놓으신 스킨 그대로 테스트 해봐도 이미지를 불러오지 못하는데요 그전 내용따오기는 댓글보고 수정하라는 내용있어서 수정하고 불러와지는데 이것은 그렇게 해도 안됩니다 ㅜㅜ 귀찮게 해서 죄송해유 원인을 알기는 어려울까요?
인단 제가 올려 놓은 스킨과 수정 방법을 테스트해본 결과 정상 작동하는 것으로 확인되었습니다.

혹시 서버 설정상 원격 파일을 불러오지 못하는 경우가 있을 수 있가 있습니다.

write_update.head.skin.php


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


아래에


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

if(file_get_contents('http://naver.com')) alert("file_get_contents 사용 가능");
else alert("file_get_contents 사용 불가");
die();


를 넣어 테스트 해 볼 수 있을 것 같습니다.
요거 쓰고 싶은데 제가 반응형이라 css가 깨집니다 ㅠ
캡쳐하는 소스를 기존 보드 폴더로 옮기는 방법도 있을까요? 있으면 좀 알려주세요 하루째 해매고 있습니다 ㅋ
전체 2,436 |RSS
그누보드5 스킨 내용 검색

회원로그인

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