2009년 9월 5일 토요일

디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다! (업그레이드)

디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다푸른곰 님께서 달아주신 댓글에도 나와있듯이, 이런 프로그램에는 해상도 변경(리샘플링) 기능이 필수다.

사진을 찍을 때는 정신 없이 크게 찍다가 나중에 줄여야되는 상황이야 기본이고, 대부분의 디카 자체가 그리 똑똑하지 않은 편이라 처음부터 해상도를 낮게 잡으면 한없이 구린 화질을 보여주는 것이 현실이기도 하기 때문이다.
(4000x3000으로 찍었다가 640x480으로 리샘플링하는 것이 처음부터 640x480으로 찍는 것보단 화질이 좋음)

리샘플링 기능을 추가한 JPEG Shrinker 2.1을 공개한다.
이 프로그램은 지난번에 올린 1.0에 최소한의 리샘플링 기능 및 최소한의 Exif 수정 기능만 추가한 것이다.

사용자 삽입 이미지

이 프로그램의 특징은 아래와 같다.

1. libjpeg 7.0 외에 어떠한 라이브러리도 사용하지 않아 파일 크기를 최소한으로 유지
2. Lanczos3 resampling(a=3)을 이용한 고화질 리샘플링 기능 제공
3. UPX로 압축하여 파일 크기 최소화 (1.0은 115,200Bytes, 2.1은 117,760 Bytes)
4. Exif 정보 및 생성일자를 그대로 가져오며, Exif에 픽셀 수가 명시된 경우엔 픽셀수 정보 수정

역시 아래 파일을 다운받아 압축을 풀어 사용하면 되며, 역시 별도의 설명은 없다.


덧1. 해상도를 800x600이나 640x480 등으로 많이 줄일 땐 저장 품질을 90 정도는 유지하는 편이 좋다.

덧2. Lanczos 최적화에 하루를 꼬박 사용함. MMX는 안 쓰지만, 최적의 속도를 구현했다고 자부함.

댓글 4개:

  1. trackback from: 디카 메모리가 부족하다고 풍경을 마음에 담을 순 없다!
    지난 주말 가까운(응?) 드레스덴과 프라하에 마실 다녀왔다. (응? 응?) 오는 길에 프라하 홀로쇼비치 역에서 한국인 배낭여행객을 한 분 만나서 그리 심심하지 않게 드레스덴까지 올 수 있었다. 그런데, 그 분은 무려 3개월간의 배낭여행 중 2.5개월째라 디카 메모리가 거의 다 찼다고 하셨다. 그래서 사진을 찍을 땐 해상도를 낮춰서 찍으며, 진짜 풍경은 마음에 담았다신다. 아무리 그래도 어찌 풍경을 마음에... 마음의 용량이 몇 GB시길래... 그래서..

    답글삭제
  2. 멋지십니다. 해내셨군요!:)

    답글삭제
  3. @푸른곰 - 2009/09/05 18:17
    문제가 이놈의 ㅂㅅ같은 Visual C++ 6.0은 리샘플링 시간이 너무 오래 걸린단 겁니다.

    .Net 2003에서 해보니까 대략 1.25배 정도는 빨라지는데, jpeg 라이브러리가 .Net 2003에선 컴파일이 잘 안 되는군요. OTL.

    답글삭제
  4. @푸른곰 - 2009/09/05 18:17
    2.3으로 업데이트했습니다.



    혹시나 생각이 있으시다면 (굽신굽신) 한 번 써봐줍쇼~

    답글삭제