250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 티스토리챌린지
    • 오블완
    • 뉴스앱

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/Web

    Blob 데이터를 이미지로 보여주는 방법

    2024. 6. 18. 16:02
    728x90
    반응형

    DB에 Blob으로 저장되 있는 이미지데이터를 조회해서 화면에 보여줄 필요가 있었습니다.

     

    Entity에서는 Blob데이터를 아래와 같이 ByteArray으로 가져올 수 있습니다.

    @Column(name="img_data")
    @Lob
    val imgData: ByteArray,

     

    가져온 ByteArray는 아래의 함수를 호출해서 이미지데이터를 Base64 인코딩 후 앞에 data:image/png;base64, 를 추가합니다. 이 데이터 URL(data URL)을 사용하여 HTML에서 이미지를 인라인으로 명시할수 있습니다. 브라우저는 이 데이터를 디코딩하여 이미지를 렌더링합니다.

    fun getImgSrc(byteArray: ByteArray) : String {
        var base64Encode = Base64.getEncoder().encodeToString(byteArray)
        base64Encode = "data:image/png;base64," + base64Encode;
        return base64Encode;
    }

    data:image/png;base64, 문자열은 크게 세 부분으로 나눌 수 있습니다:

    1. data: - 이 부분은 데이터 URL의 시작을 나타냅니다.
    2. image/png; - 이 부분은 MIME 타입을 나타냅니다. 여기서 image/png는 이미지 파일이 PNG 형식임을 나타냅니다. 이 부분은 이미지 형식에 따라 다를 수 있습니다. 예를 들어, JPEG 형식의 이미지는 image/jpeg가 됩니다.
    3. base64, - 이 부분은 데이터가 base64로 인코딩되었음을 나타냅니다. 실제 이미지 데이터는 base64로 인코딩된 문자열로 이어집니다.

     

    html에서는 아래와 같이 src에 데이터 URL을 넣어주면 이미지가 보이게 됩니다.

    <img id="testImg" src="">
    <script>
    document.getElementById("testImg").src = res.imgData;
    </script>
    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > Web' 카테고리의 다른 글

    PHP + MariaDB + Intellij 개발환경설정  (0) 2025.01.17
    [Three.js] POINT CLOUD 3D 이미지 웹페이지 노출  (1) 2024.07.17
    location.href 시 history.length 변경 없는 이슈, history.pushState 뒤로가기 이슈  (1) 2023.08.07
      '개발/Web' 카테고리의 다른 글
      • PHP + MariaDB + Intellij 개발환경설정
      • [Three.js] POINT CLOUD 3D 이미지 웹페이지 노출
      • location.href 시 history.length 변경 없는 이슈, history.pushState 뒤로가기 이슈
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바