최근에 이미지를 입력 받아 썸네일 이미지를 만들어주는 서비스를 만들게 되었는데.
JAVA 기본 패키지에 있는 AffineTransform 클래스를 이용해서 resize 했더니...
원본 이미지의 사이즈가 크다보니, 썸네일 이미지가 심하게 깨지는게 너무 맘에 안들어
이것저것 찾아보기 시작했다.

JAI도 적용 해보았으나 그닥 나아지지 않았다.


이후 발견하고 적용한 내용은... 와우~ 정말 좋은 화질의 썸네일이 만들어졌다.

우선 만들어진 썸네일 비교부터.

순서대로 기존 AffineTransform, 새로만든놈, 페이스북 썸네일


기존에 비해 월등히 좋아진 썸네일을 발견 할수 있다. 페이스북과 비교해도 별 차이가 없을 정도


바로 http://code.google.com/p/java-image-scaling/  이놈.

사용법도 간단하다.

java-image-scaling-0.8.5.jar 와 Filters.jar 를 build path에 등록하고


protected boolean scale( BufferedImage srcImage, String destPath, String imageFormat, int destWidth, int destHeight) {

                    

                     boolean result = true;

                    

                     try {

                                ResampleOp resampleOp = new ResampleOp( destWidth, destHeight );

                                                                                     resampleOp.setUnsharpenMask( AdvancedResizeOp.UnsharpenMask.Soft );


                                BufferedImage rescaledImage = resampleOp.filter( srcImage, null );

                                File destFile = new File( destPath );

                                ImageIO.write(rescaledImage, imageFormat, destFile );

                               

                     } catch (IOException e) {

                                logger.error("Improved Image scaling falied!");

                                logger.error(e.getMessage() );

                                result = false;

                     }

                    

                     return result;

           }


대충 요정도?

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 가이던스




자바 가상 머신이란 무엇인가?

Tim Lindholm과 Frank Yellin이 쓴 "자바 가상 머신 명세서( The Java Virtual Machine Specification"를 보면 자바 가상머신에 대하여 다음과 같이 정의 되어 있다.

- 명령어들의 집합과 각 명령어의 의미의 정의 : Bytecode
- 클래스 파일 형식이라고 불리는 바이너리 형식 : 플랫폼 독립적으로 동작 가능
- 프로그램에 문제가 없는지를 확인하는 알고리즘 : Verification 알고리즘


1. 명령어 집합
JVM에서 실행되는 프로그램은 Bytecode라고 불리는 명령어로 표현된다. 이런 명령어 집합은 스택 기반의 명령어와 툭수한 객체지향 명령어들로 이루어져있다.

2. 클래스 파일 형식
JVMS에서는 class에 대한 이진 파일 형식이 정의되어 있다. 이 형식은 바이트의 스트림으로 표현되며, 자바 플랫폼은 이런 바이트 스트림으로 표현된 클래스 파일을 JVM에서 사용되는 클래스로 바꾸는 방법을 제공한다. 이 방법이 바로 우리가 흔히 알고 있는 ClassLoader이다.

* 클래스 파일 형식 이라고 해서 클래스가 파일로만 존재하는것은 아니다.

3. 검증 ( Verification )
JVM은 모든 클래스를 체크해주는 알고리즘을 가지고 있다. 이런 검증 알고리즘은 프로그램이 JVM에서 요구하는 규칙들을 만족시키는지 확인하며, 프로그램이 시스템에 위험한 작업이 수행되지 않도록 보장한다.

검증 알고리즘은 다음과 같은 항목들을 검사한다.
- 구조적 관점에서 명확한 클래스 파일인지
- 모든 상수들이 정확하게 참조되는지
- 명령어들이 모두 유효한지
- 스택과 지역 변수가 적절한 타입의 값을 가지는지
- 참조하는 클래스들이 존재하며, 필요한 메소드나 필드가 모두 있는지


크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 가이던스





BLOG main image
Direction
내 삶의 목표, 방향 by 가이던스

공지사항

카테고리

분류 전체보기 (8)
android (0)
Java (8)
기타 (0)

글 보관함

달력

«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
Total : 15,654
Today : 0 Yesterday : 10