2016-12-05 5 views
0

빠른 질문이 있습니다. 나는 여러 이미지를 모두 bmp 형식으로 가지고 있으며, 내가 쓰고있는 응용 프로그램에 다양한 압축 알고리즘 옵션을 통합하려고합니다. 즉, 사용자가 "Image1.bmp"를 선택하고 Brotli 또는 JP2K로 압축하고 내보내려고한다고 가정 해 봅시다. 이미지를 해당 알고리즘에 따라 압축하도록 해당 알고리즘을 자체 청취 함수에 통합하려면 어떻게해야합니까? 나는 리스너를 셋업하고 모든 것을 가지고 있기 때문에 도움이 필요한이 문제의 유일한면은 실제로 알고리즘을 포함하는 것이다. 내가 알지 못하는 플러그인이 있습니까? GeoTools를 조금 봤지만 JP2k에만 적용되는 것처럼 보입니다.Java 코드에서 다른 압축 알고리즘 사용

어떤 통찰력이라도 대단히 감사하겠습니다. 고마워요!

편집 : 방금 생각했습니다. Java 함수 내에서 특정 알고리즘에 대한 명령 줄 요청을 효과적으로 실행할 수있는 방법이 있습니까?

+2

외부 명령을 실행하려면 ['java.lang.Runtime'] (https://docs.oracle.com/javase/8/docs/api/)의 다양한'exec()'메소드를 살펴보십시오. java/lang/Runtime.html). –

+2

타사 라이브러리를 사용하거나 다른 프로그램을 사용할 수있는 경우 'ProcessBuilder'를 사용하여 라이브러리를 실행하십시오. – Kayaman

답변

1

당신은 인터페이스가 다음 원하는 알고리즘을 구현하는 클래스를 만들 만들 수 있습니다 다음

public interface ICompressionMethods 
{ 
    public void cMethod(); 
} 

과 :

public class Brotli implements ICompressionMethods 
{ 
    @Override 
    public void cMethod() 
    { 
     // Your compression code here 
    } 
} 

지금 새 클래스 각각의 새로운 다른 알고리즘을 구현해야합니다. 이 접근 방식의 이점은 ICompressionMethod와 같은 간단하고 유사한 인수를 메서드에 전달할 수 있으며 구현에 따라 다른 결과를 얻을 수 있다는 것입니다.

+2

인터페이스를 사용하는 것이 옳은 방법이지만 Java에서 이러한 이름은 매우 독창적입니다. 아마도 그것들을'public interface ImageCompressor'와'public void compress()'로 변경할 수 있습니다. – byxor

+0

흠 ... 이런 식으로 뭔가 내 프로그램을 구성하는 데 도움이 될 것 같아요. 나는 그것이 필요한지 아닌지에 관해 더 많은 생각을 분명히 줄 것이다. 이것과 exec()를 실행하는 사이에, 나는이 문제를 하루가 끝날 때까지 해결할 수 있다고 생각한다. 감사! – Sarah

+1

@Sarah 잘 결합 해제 된 디자인이 항상 필요합니다. 인터페이스는 많은 힘을줍니다. 이 인터페이스의 구현 중 하나에서 항상'exec'를 실행할 수 있습니다. 나는 그것이 최선의 방법이라고 생각한다. – byxor