싸이월드처럼 게시판에 이미지 올릴때 자동으로 용량 줄여주는 컴포넌트 정보
싸이월드처럼 게시판에 이미지 올릴때 자동으로 용량 줄여주는 컴포넌트본문
싸이월드처럼 게시판에 이미지 올릴때 자동으로 용량 줄여주는 컴포넌트에 대해서 잘 아시는 분...
웹호스팅 사용자가 쓸수 있는 액티브엑스 방식으로 구현된 소스를 구할 방도가 있는지요.
유료싸이트가 있긴 한데 넘 비싸서요..
그리고 일년마다 돈을 내야 한다는 조건이라서 직접 구현해보고 싶어서 그럽니다.
이런거 써보신 분 혹시 계시나요?
듣자하니 이미지 업로드 컴포넌트가 인터넷에 널렸다던데
어떤게 어떤 것인지 알수가 없는지라...
웹호스팅 사용자가 설치해서 쓸수 있게끔 제작된 것이 있는지...
좋은 정보 부탁해요...
웹호스팅 사용자가 쓸수 있는 액티브엑스 방식으로 구현된 소스를 구할 방도가 있는지요.
유료싸이트가 있긴 한데 넘 비싸서요..
그리고 일년마다 돈을 내야 한다는 조건이라서 직접 구현해보고 싶어서 그럽니다.
이런거 써보신 분 혹시 계시나요?
듣자하니 이미지 업로드 컴포넌트가 인터넷에 널렸다던데
어떤게 어떤 것인지 알수가 없는지라...
웹호스팅 사용자가 설치해서 쓸수 있게끔 제작된 것이 있는지...
좋은 정보 부탁해요...
댓글 전체
업로드 컴포넌트는 좀 그렇고 여기 스킨들 중 썸네일 생성해 주는 갤러리에서 참고하셔서 만드시면 될겁니다.
썸네일기능을 이용하면 용량을 줄일 수 있죠...
썸네일기능을 이용하면 용량을 줄일 수 있죠...
그런데요.. 사용자가 이미지 첨부할때 엄청나게 큰 이미지를 첨부하는 경우가 있어서 그래요. 이미지를 작게 축소하지 못하고 1280X1024 같이 크게 올려버리기 때문에 여러개의 이미지를 업로드하게되면 트래픽도 그렇고 일단 서버에서 처리해야 하는게 부담도 되고 해서 사용자 브라우저에서 미리 처리가 되도록 해야 하겠기에 그럽니다.
누구 아시는분 정보 좀 주세요...
누구 아시는분 정보 좀 주세요...
저도 사이트를 만들때 이곳에서 썸네일 생성되는 소스를 찾았었습니다.
그런데 섬네일이 생성되는건 아주 만족스러웠으나, 올라가는 이미지도 줄여야하는 상황이 생기더라구요..
그래서 전 이곳에서 받은 소스를 이용했습니다.(음 죄송합니다... 기억력이 나빠서... 여기서 GD를 이용한 썸네일생성 갤러리 스킨중 하나로밖에)
아래소스는 write_update.skin.php과 별도의 thum.lib.php 를 만들면 좋겠지만...
제가 이소스를 삽입 당시에는 그누보드가 어떻게 돌아가는지 몰라서.. 그냥 bbs/write_update.php 에 넣었습니다.
아래 제가 사용한 방법이 도움이 되었으면 좋겠네요..
그리고 다른 고수님들께서 좀더 편한 방법이나 더 낳은 소스 있으시면 알려주시리라 믿습니다...
$noIMG = $board_skin_path."/img/_noIMG.gif"; //[필수](URL)
$max = $itemtitle[1] ; //[필수](픽셀) // 썸네일 이미지의 가로세로(긴쪽)의 최대치.
$resol = $itemtitle[2] ; //[필수](퍼센트%) // 생성되는 썸네일의 JPG압축률.
$str = $itemtitle[3] ; //[필수](글자수) // 썸네일 밑의 제목의 글자수.
$smallMax = 600; // 강제로 줄여서 저장시킬때 원하는 줄어든 이미지의 가로세로(긴쪽)의 최대치입니다. by Ted
$smallResol = 100; // 생성되는 이미지의 JPG압축률입니다. 높으면 화질은 선명하나 용량은 다소 큽니다. by Ted
// 아래 두 function은 업로드 되는 이미지의 사이즈를 강제로 줄이기 위한 것입니다. by Ted
function changeToSmaller( $W, $H ) {
global $smallMax, $thum_W, $thum_H ;
if ( $W > $H ) { //가로형일 경우.
if ($W > $smallMax){ // 실제사이즈가 지정된 사이즈보다 작으면 그냥 이용합니다. 그렇지 않으면 작은 이미지가 강제로 커져서 모자이크화 되버립니다.
$thum_W = $smallMax ;
$thum_H = ceil( $H * ( $smallMax / $W ) );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
if ( $W < $H ) { //세로형일 경우.
if ($H > $smallMax){
$thum_H = $smallMax ;
$thum_W = ceil( $W * ( $smallMax / $H ) );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
if ( $W == $H ) { //정사각형일 경우.
if ($W > $smallMax){
$thum_W = ceil( $smallMax * 0.8 );
$thum_H = ceil( $smallMax * 0.8 );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
return $thum_W ;
return $thum_H ;
}
function smallMaker( $thum_W, $thum_H ) {
global $thum, $smallResol, $ori, $ori_info ;
//$newImg = ImageCreate($thum_W,$thum_H); // GD라이브러리 2.0 (이하일 경우)
$newImg = ImageCreateTrueColor($thum_W,$thum_H); // GD라이브러리 2.0 전용함수
if($ori_info[2]=="2") $origImg=ImageCreateFromjpeg($ori);
if($ori_info[2]=="3") $origImg=ImageCreateFrompng($ori);
//ImageCopyResized($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg));
imageCopyResampled($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg));
Imagejpeg($newImg, $thum, $smallResol );
chmod($thum,0707);
ImageDestroy($newImg);
ImageDestroy($origImg);
return $thum ;
}
// 이상 함수 정의였습니다.
그리고 아래는 제가 write_update.php 에 넣은 소스입니다.
아무래도 그누보드 원본파일을 건드리면 나중에 업데이트하기 곤란하기 write_update.skin.php 를 이용하시는것이 바람직하지 않을까 생각됩니다.
(전 그냥 여기다가 했습니다 ^^;;;)
대충 200번째 라인쯤..
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES[bf_file][error][$i]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);
///// 여기부터 추가
// 올라간 파일이 이미지라 가정하고 강제로 줄이기 시작합니다. 전 게시판에서 유일하게 이미지만 올릴수가 있었거든요 ^^;;
// 만약 이미지가 아니라면 어떤 오류가 날지 모르겠네요..그래서 기왕이면 별도의 파일을 제작해주시는것이..
$image = $upload[$i][file];
$ori="$g4[path]/data/file/$bo_table/" . $image;
$ext = strtolower(substr(strrchr($ori,"."), 1)); //확장자
$thum = $ori;
if ( $ext=="gif"||$ext=="jpg"||$ext=="jpeg"||$ext=="png"||$ext=="bmp"||$ext=="tif"||$ext=="tiff") $ori_info=getimagesize($ori); else $ori_info="";
if ( $ori_info[2]=="2" || $ori_info[2]=="3" ) { //====================== 원파일이 [ 2JPG, 2JPEG, 3PNG ] 경우.
if ( changeToSmaller( $ori_info[0], $ori_info[1] ) ) {
smallMaker( $thum_W, $thum_H );
}
} else if ( $ori_info[2]=="1" || $ori_info[2]=="6" || $ori_info[2]=="7" ) { //=================== 원파일이 [ 1GIF,6BMP,7TIF ] 경우.
if ( changeToSmaller( $ori_info[0], $ori_info[1] ) ) {
$thum = $ori ;
}
}
///// 여기까지 추가내용.. 아래부터는 원본..
$upload[$i][image] = @getimagesize($dest_file);
}
}
if ($w == "" || $w == "r")
그런데 섬네일이 생성되는건 아주 만족스러웠으나, 올라가는 이미지도 줄여야하는 상황이 생기더라구요..
그래서 전 이곳에서 받은 소스를 이용했습니다.(음 죄송합니다... 기억력이 나빠서... 여기서 GD를 이용한 썸네일생성 갤러리 스킨중 하나로밖에)
아래소스는 write_update.skin.php과 별도의 thum.lib.php 를 만들면 좋겠지만...
제가 이소스를 삽입 당시에는 그누보드가 어떻게 돌아가는지 몰라서.. 그냥 bbs/write_update.php 에 넣었습니다.
아래 제가 사용한 방법이 도움이 되었으면 좋겠네요..
그리고 다른 고수님들께서 좀더 편한 방법이나 더 낳은 소스 있으시면 알려주시리라 믿습니다...
$noIMG = $board_skin_path."/img/_noIMG.gif"; //[필수](URL)
$max = $itemtitle[1] ; //[필수](픽셀) // 썸네일 이미지의 가로세로(긴쪽)의 최대치.
$resol = $itemtitle[2] ; //[필수](퍼센트%) // 생성되는 썸네일의 JPG압축률.
$str = $itemtitle[3] ; //[필수](글자수) // 썸네일 밑의 제목의 글자수.
$smallMax = 600; // 강제로 줄여서 저장시킬때 원하는 줄어든 이미지의 가로세로(긴쪽)의 최대치입니다. by Ted
$smallResol = 100; // 생성되는 이미지의 JPG압축률입니다. 높으면 화질은 선명하나 용량은 다소 큽니다. by Ted
// 아래 두 function은 업로드 되는 이미지의 사이즈를 강제로 줄이기 위한 것입니다. by Ted
function changeToSmaller( $W, $H ) {
global $smallMax, $thum_W, $thum_H ;
if ( $W > $H ) { //가로형일 경우.
if ($W > $smallMax){ // 실제사이즈가 지정된 사이즈보다 작으면 그냥 이용합니다. 그렇지 않으면 작은 이미지가 강제로 커져서 모자이크화 되버립니다.
$thum_W = $smallMax ;
$thum_H = ceil( $H * ( $smallMax / $W ) );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
if ( $W < $H ) { //세로형일 경우.
if ($H > $smallMax){
$thum_H = $smallMax ;
$thum_W = ceil( $W * ( $smallMax / $H ) );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
if ( $W == $H ) { //정사각형일 경우.
if ($W > $smallMax){
$thum_W = ceil( $smallMax * 0.8 );
$thum_H = ceil( $smallMax * 0.8 );
} else {
$thum_W = $W;
$thum_H = $H;
}
}
return $thum_W ;
return $thum_H ;
}
function smallMaker( $thum_W, $thum_H ) {
global $thum, $smallResol, $ori, $ori_info ;
//$newImg = ImageCreate($thum_W,$thum_H); // GD라이브러리 2.0 (이하일 경우)
$newImg = ImageCreateTrueColor($thum_W,$thum_H); // GD라이브러리 2.0 전용함수
if($ori_info[2]=="2") $origImg=ImageCreateFromjpeg($ori);
if($ori_info[2]=="3") $origImg=ImageCreateFrompng($ori);
//ImageCopyResized($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg));
imageCopyResampled($newImg,$origImg,0,0,0,0,$thum_W,$thum_H,ImageSX($origImg),ImageSY($origImg));
Imagejpeg($newImg, $thum, $smallResol );
chmod($thum,0707);
ImageDestroy($newImg);
ImageDestroy($origImg);
return $thum ;
}
// 이상 함수 정의였습니다.
그리고 아래는 제가 write_update.php 에 넣은 소스입니다.
아무래도 그누보드 원본파일을 건드리면 나중에 업데이트하기 곤란하기 write_update.skin.php 를 이용하시는것이 바람직하지 않을까 생각됩니다.
(전 그냥 여기다가 했습니다 ^^;;;)
대충 200번째 라인쯤..
// 업로드가 안된다면 에러메세지 출력하고 죽어버립니다.
$error_code = move_uploaded_file($tmp_file, $dest_file) or die($_FILES[bf_file][error][$i]);
// 올라간 파일의 퍼미션을 변경합니다.
chmod($dest_file, 0606);
///// 여기부터 추가
// 올라간 파일이 이미지라 가정하고 강제로 줄이기 시작합니다. 전 게시판에서 유일하게 이미지만 올릴수가 있었거든요 ^^;;
// 만약 이미지가 아니라면 어떤 오류가 날지 모르겠네요..그래서 기왕이면 별도의 파일을 제작해주시는것이..
$image = $upload[$i][file];
$ori="$g4[path]/data/file/$bo_table/" . $image;
$ext = strtolower(substr(strrchr($ori,"."), 1)); //확장자
$thum = $ori;
if ( $ext=="gif"||$ext=="jpg"||$ext=="jpeg"||$ext=="png"||$ext=="bmp"||$ext=="tif"||$ext=="tiff") $ori_info=getimagesize($ori); else $ori_info="";
if ( $ori_info[2]=="2" || $ori_info[2]=="3" ) { //====================== 원파일이 [ 2JPG, 2JPEG, 3PNG ] 경우.
if ( changeToSmaller( $ori_info[0], $ori_info[1] ) ) {
smallMaker( $thum_W, $thum_H );
}
} else if ( $ori_info[2]=="1" || $ori_info[2]=="6" || $ori_info[2]=="7" ) { //=================== 원파일이 [ 1GIF,6BMP,7TIF ] 경우.
if ( changeToSmaller( $ori_info[0], $ori_info[1] ) ) {
$thum = $ori ;
}
}
///// 여기까지 추가내용.. 아래부터는 원본..
$upload[$i][image] = @getimagesize($dest_file);
}
}
if ($w == "" || $w == "r")
감사합니다.
기다린 보람이 있군요.
잘 쓰겠습니다.
새버전에 적용하려면 신경 바짝 써야 겠군요. 실력이 부족해서..ㅎㅎ
기다린 보람이 있군요.
잘 쓰겠습니다.
새버전에 적용하려면 신경 바짝 써야 겠군요. 실력이 부족해서..ㅎㅎ
제가 알기로 생각외로 업로드 컴포넌트쪽으로.. 공개가 미약합니다.
씨로 짜여진게 올바르고 잘 작동되는듯 싶고요.. 그외 비베나 여타것들은 소스공개가 전무하다고 봐도 됩니다.
물론.. 한쪽적 기능 다운에서 표현이라든지는 몇몇개 공개되어 있습니다.
그리 쉬운건 아니지만.. 그리 어려울것도 아닐듯 싶습니다. 한 일주일 고생하시면 하나 제작하실수 있을겁니다.
씨로 짜여진게 올바르고 잘 작동되는듯 싶고요.. 그외 비베나 여타것들은 소스공개가 전무하다고 봐도 됩니다.
물론.. 한쪽적 기능 다운에서 표현이라든지는 몇몇개 공개되어 있습니다.
그리 쉬운건 아니지만.. 그리 어려울것도 아닐듯 싶습니다. 한 일주일 고생하시면 하나 제작하실수 있을겁니다.
아주 필요한 소스 같군요
윗부분 소스는 정확히 어디다 넣는 겁니까?
조금 더 상세히 부탁드립니다
초보라서요^^
감사합니다
윗부분 소스는 정확히 어디다 넣는 겁니까?
조금 더 상세히 부탁드립니다
초보라서요^^
감사합니다
썸네일 만들기
싸이월드처럼 게시판에 이미지 올릴때 자동으로 용량 줄여주는 컴포넌트
좋은 정보같군요...
감사합니다.