그럼 저번 문서1에서의 내용을 바탕으로 이미지관련 내용을 만들어 보기로 하자.
우선 인터페이스 Blurring을 하나 다음과 같이 만들었다.
interface Blurring
{
void doBlur();
boolean makeImageBlurred();
}
doBlur 에서 모든 것을 처리해도 되나..그냥 이미지를 만드는 부분은 따로 떼어내서 하나를 만들고 이미지가 제대로 만들어 지면 이미지를 원하는 곳에 만들고 상태를 성공/실패 여부를 확인 하는 메서드인 makeImageBlurred를 만들었다.
static class Blur1Test implements Blurring
{
private static final String Blur1_src_path = "resources/flower_src.jpg";
private static final String Blur1_desc_path = "resources/flower_dest.jpg";
private static final String Blur1_path = "resources/flower_blur1.jpg";
private static final String formatName = "jpg";
BufferedImage Blur1_src;
BufferedImage Blur1_dest;
BufferedImage Blur1_img;
Blur1Test()
{
try {
Blur1_src = ImageIO.read(new File(Blur1_src_path));
Blur1_dest = ImageIO.read(new File(Blur1_desc_path));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void doBlur() {
float[] matrix = new float[400];
for (int i = 0; i < 400; i++)
matrix[i] = 1.0f/400.0f;
BufferedImageOp op= new ConvolveOp(new Kernel(20, 20, matrix), ConvolveOp.EDGE_NO_OP, null);
Blur1_img = op.filter(Blur1_src, Blur1_dest);
}
@Override
public boolean makeImageBlurred() {
boolean success = false;
try {
success = ImageIO.write(Blur1_img, formatName, new File(Blur1_path));
} catch (IOException e) {
e.printStackTrace();
}
return success;
}
}
앞으로 위의 클래스나 인터페이스가 많이 바뀌겠지만,
내 생각에는 앞으로 이 흐림 효과를 만드는 여러가지 테스트 클래스를 만들어 갈때
우선, 각 클래스마다 각각의 흐림효과 테스트가 되어야 한다고 생각 했으며, 이렇게 각각의 독립적인 흐림효과 클래스를 만들기위해서는 각 클래스에서 불러오는 이미지 이름들이나, 변수들은 각 클래스내의 변수로 존재 해야 한다고 생각 하였다.
그리고 github에 테스트 한 클래스를 올려 놓았다.
BlurTest.java2 파일에서 신경 쓸 부분은 다음 선언 문이며, 각 흐림 효과마다 아이디를 부여하고 이를 SELECTED_TEST 변수에 옮겨 놓으면 되도록 하였다.
나머지 메인 함수가 있는 곳은 PPMProcessing.java3 인데,
ppm 이미지를 이용해서 이 효과들을 구현 할 수 있도록 만들어 보았다. 앞으로 진행 하면서 이를 살펴보기로 한다. 사실 가우시안 blur를 찾아가 시작되었는 데, 튜토리얼이 좋으니깐 할 수 있는 한 까지 이 흐름 효과에 대해서 작성 하도록 해보자...
대신 모든 알고리즘은
https://github.com/axet/jhlabs에서 얻어 왔다.
private static final int NORMAL_BLUR = 1;
private static final int BIG_BLUR = 2;
private static final int CONVOLV_BLUR = 3;
private static final int BOX_BLUR = 4;
private static final int GAUSSIAN_BLUR = 5;
private static final int MOTION_BLUR = 6;
private static final int MOTION_BLUR_OP = 7;
private static final int LENS_BLUR = 8;
private static final int SMART_BLUR = 9;
private static final int VARIABLE_BLUR = 10;
private static final int UNSHARP = 11;
private static final int GLOW = 12;
private static final int SHADOW = 13;
private static final int RAYS = 14;
private static final int SELECTED_TEST = BOX_BLUR;
이상.
'프로그래밍' 카테고리의 다른 글
초보자를 위한 Blurring 기술 - 1 (0) | 2023.04.08 |
---|---|
초보자를 위한 Blurring 기술 - 가우시안 Blur (0) | 2023.04.07 |
[C#] 인라인 함수 사용하기 (0) | 2023.04.04 |
[자바] 부울 값을 정수 값으로 변환하기 (0) | 2023.04.03 |
[MinGW ] 윈도우용 SQLCipher C에서 자바까지 - 2 (0) | 2023.03.31 |