C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[24395] Re:Re:[bmp와 jpg의 차이...?]
머슴.한석복 [han8783] 1283 읽음    2003-02-19 19:07
유영인.Chris 님이 쓰신 글 :
: 개별 포맷을 만들어 사용하시는 것이 좋으실것 같습니다. BMP와 JPEG 의 로딩 속도 차이는 그 차이가 엄청납니다.
:
: 허프만식 방법으로 압축을 하는 알고리즘을 직접 만드셔서 BMP 데이터를 하나의 개별 포맷으로 만들어 내시는 것이 좋을 것 같습니다. 허프만식 알고리즘도, 압축 프로그램처럼 구현한다면 오히려 압축 해제 속도가 더 걸릴 수 있으니, 적당한 선에서 자르는 것도 좋으실 것 같습니다.
:
: 아니면 GIF, PNG 같은 차선책을 이용하시는 것도 어떠신지요. JPG 보다는 로딩 속도가 빠릅니다.
:
: 아래는 아바타를 만들어 볼때 쓰던 압축방법인데 간단한 압축만 하고 있습니다. BMP 특성상 간단한 압축을 해도 압축률이 상당히 좋습니다. 압축은 PHP, 해제는 C++ Builder 에서 하고 있습니다. PHP 소스 밖에 못찾아서 이것밖에 못 올려드리네요.. 꾸벅..
:
: <?
:
:  // 자체 압축 알고리즘. 컬러 인덱스화는 PHP 인터프리터의 속도가 너무 나오지 않아 포기. --;
:  // 현재는 반복 컬러 사용만을 키로 대치하는 루틴이다. 압축률은 약 30%.
:  function Compress($SOURCE, $SOURCE_COUNT, $HEADER) {
:
:    global             $COMPRESSED_HEADER;
:    global             $COMPRESSED_IMAGE;
:
:    $TREE              = array("");
:    $KEY_1BYTE         = "";
:    $KEY_2BYTE         = "";
:    $COMPRESSED_HEADER = $HEADER;
:
:
:    // 각 ASCII의 사용 횟수를 알아봄
:    for($itCount = 0; $itCount < $SOURCE_COUNT; $itCount ++) {
:      $HEAD = substr($SOURCE[$itCount], 0, 1);
:      $TAIL = substr($SOURCE[$itCount], 1, 1);
:
:      $HEAD_INDEX = ord($HEAD);
:      $TAIL_INDEX = ord($TAIL);
:
:      $TREE[$HEAD_INDEX] ++;
:      $TREE[$TAIL_INDEX] ++;
:    }
:
:
:    // 사용 할 수 있는 ASCII 코드를 따로 키로 뽑음
:    for($itCount = 0; $itCount < 256; $itCount ++) {
:      if($TREE[$itCount] == 0) {
:        if($KEY_1BYTE == "") {
:          $KEY_1BYTE = chr($itCount);
:         } else {
:          $KEY_2BYTE = chr($itCount);
:          break;
:        }
:      }
:    }
:
:
:    // 모든 ASCII가 다 사용 될때의 처리. 압축 할 수 없음
:    if($KEY_1BYTE == "") {
:      return;
:     } else {
:      $COMPRESSED_HEADER = "JF" . $KEY_1BYTE . $KEY_2BYTE . substr($HEADER, 2, 256);
:    }
:
:
:    // 컬러를 압축
:    $COLOR_PREVIOUS = "";
:    $COLOR_COUNT    = 0;
:    $COLOR_STRING   = "";
:
:    for($itCount = 0; $itCount < $SOURCE_COUNT; $itCount ++) {
:      if($COLOR_PREVIOUS == $SOURCE[$itCount]) {
:        $COLOR_COUNT ++;
:       } else {
:        if($COLOR_COUNT > 1) {
:          if($COLOR_COUNT <= 255) {
:            $COLOR_STRING .= $KEY_1BYTE;
:            $COLOR_STRING .= chr($COLOR_COUNT);
:           } else {
:            $COLOR_STRING .= $KEY_2BYTE;
:            $COLOR_STRING .= chr($COLOR_COUNT % 256) . chr($COLOR_COUNT / 256);
:          }
:        }
:
:        $COLOR_STRING   .= $SOURCE[$itCount];
:        $COLOR_PREVIOUS  = $SOURCE[$itCount];
:        $COLOR_COUNT     = 1;
:      }
:    }
:
:
:    // 남은 Count 처리
:    if($COLOR_COUNT > 1) {
:      if($COLOR_COUNT <= 255) {
:        $COLOR_STRING .= $KEY_1BYTE;
:        $COLOR_STRING .= chr($COLOR_COUNT);
:       } else {
:        $COLOR_STRING .= $KEY_2BYTE;
:        $COLOR_STRING .= chr($COLOR_COUNT % 256) . chr($COLOR_COUNT / 256);
:      }
:    }
:
:
:    $COMPRESSED_IMAGE = $COLOR_STRING;
:
:  }
:
: ?>
:
:
: 머슴.한석복 님이 쓰신 글 :
: : BMP 나 JPEG으로 파일을 저장 할때요..
: :
: : JPEG이 BMP에 비해서 훨씬 저장 시간이 많이 걸리 잖아요...
: : -제가 테스트 해 본 결과로는 약 2-300 MS가 더 걸리던데...
: :
: : JPEG으로 저장 할때, 시간을 좀 줄이는(BMP와 비슷하게 많이라도) 방법이나,
: : 알고리즘이 있으면 좀 가르쳐 주세요.
: :
: : 즐프 하세요...

성의 있는 답변 정말 고개 숙여 감사 드립니다.
좋은 하루 되십시오.

+ -

관련 글 리스트
24327 [bmp와 jpg의 차이...?] 머슴.한석복 755 2003/02/17
31873     Re:[bmp와 jpg의 차이...?] 머슴.한석복 720 2003/02/17
31872     Re:[bmp와 jpg의 차이...?] 하느리 773 2003/02/17
24357     Re:[bmp와 jpg의 차이...?] 유영인.Chris 1317 2003/02/18
24395         Re:Re:[bmp와 jpg의 차이...?] 머슴.한석복 1283 2003/02/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.