Lee's Grow up

[Java] Image/이미지를 BinaryData/바이너리데이타 로 변환 후 Base64(Encodig/Decoding)를 통해 text/문자로 변환 본문

PROGRAMMING/JAVA

[Java] Image/이미지를 BinaryData/바이너리데이타 로 변환 후 Base64(Encodig/Decoding)를 통해 text/문자로 변환

효기로그 2019. 10. 23. 18:40
반응형

개요


  • Binary Data 

기본 단위가 2개의 상태만 가지는 데이터. 일반적으로 2진법과 볼 대수에서는 2개의 상태를 0과 +1로 나타낸다. 쉽게 말해 컴퓨터가 2진법을 사용해서 데이터를 처리하기 때문에 컴퓨터가 바로 알아 볼 수 있는 2진 데이터

 

출처 : 위키백과

 

이진 데이터 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이진 데이터(영어: Binary Data)는 기본 단위가 2개의 상태만 가지는 데이터이다. 일반적으로 이진법과 불 대수에서는 2개의 상태를 0과 +1로 나타낸다.


  • Base64 

컴퓨터 분야에서 쓰이는 Base64란 8비트 이진 데이터를 문자 코드에 영향 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.

 

원래 Base64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 2^6) 이며, 2의 제곱수들에 기반한 진법들 중에서 화면ㅇ ㅔ표시되는 ASCII 문자들을 써서 표현할 수 있는 가장 큰 진법이기 때문이다. 즉, 다음 제곱수인 128진법에서는 128개의 기호가 필요한데 화면에 표시되는 ASCII 문자들은 128개가 되지 않는다.

 

출처 : 위키백과

 

베이스64 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다. 원래 Base 64를 글자 그대로 번역하여 보면 64진법이란 뜻이다. 특별히 64진법이 컴퓨터에서 흥미로운 것은, 64가 2의 제곱수(64 = 26)이며, 2의 제곱수들에

ko.wikipedia.org

 

서론은 여기까지 하고 이미지를 java에서 Base64 인코딩을 통해서 문자열을 추출하기 위한 코딩을 설명하겠습니다.

자바에서 Base64사용 방법은 자바 내장 클래스 이용과 라이브러리 사용방법 두가지가 존재하는데 이번 포스팅에서는 자바 내장 Base64를 사용하는 방식으로 진행하겠습니다.

Java(자바) 코드


Main Method
1
2
3
4
5
6
7
8
public static void main(String[] args) throws Exception {
 
    byte[] imageBytes = extractBytes("C:/wbmail_01.gif");
    byte[] baseIncodingBytes = encodingBase64(imageBytes);
 
    System.out.println(new String(baseIncodingBytes));
 
}
 

 

extractBytes Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@SuppressWarnings("resource")
public static byte[] extractBytes(String imageName) throws IOException {
    File imgPath = new File(imageName);
    FileInputStream fis = null;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
    fis = new FileInputStream(imgPath);
 
    int len = 0;
 
    byte[] buf = new byte[1024];
 
    while ((len = fis.read(buf)) != -1) {
        baos.write(buf, 0, len);
    }
    byte[] fileArray = baos.toByteArray();
 
    return fileArray;
}
 

 

encodingBase64 Method
1
2
3
4
public static byte[] encodingBase64(byte[] targetBytes) {
    Encoder encoder = Base64.getEncoder();
}
 

 

간략하게 설명하면 이미지를 바이너리 데이터로 반환받을 byte[] 배열을 하나 선언해주고. extractBytes ( String FileName ) 메소드를 통해 값을 리턴 받습니다.

그 후 반환받은 바이너리 데이터로 base64인코딩을 하는 메소드 encodingBase64 ( byte[] baBinaryDatas ) 를 통해

값을 리턴받고 해당 데이터를 출력하는 구문입니다.

 

반응형
Comments