[CS] 이미지

2023. 11. 24. 23:50·⚙️ CS

 

 

 

이전에 잭님이 다뤄주신 부분이지만, 휴님께서 CS 정리 할 때 한번 더 이미지와 관련된 부분을 정리해주셔서 수업 키워드 내용을 기반으로 개인적으로 정리를 하기로 했다. 오늘 정리할 내용은 이미지에 대한 내용으로, 비트맵과 벡터, JPG - PNG - GIF 에 대한 내용을 개인 복기용으로 (정말) 간단하게 다룰 예정이다.

 

 

 

 

 

 

 

📌 비트맵 vs 벡터

 

- 비트맵(Bitmap)이란?

 

📖  서로 다른 점(픽셀)들의 조합으로 그려지는 이미지 표현 방식으로, 일정 이상 사이즈를 늘리면 픽셀이 깨져버린다.

 

우리가 흔히 아는 JPG, JPEG, PNG, GIF가 비트맵 표현방식 기반으로 이미지를 표현하는 종류의 예시. 그 특징은 아래와 같다.

 

종류 특징 투명도 지원 용량
JPG 손실 압축
RGB
(세 가지 컬러에 대한 처리)
X 적음
PNG 무손실 압축
RGBA
(알파값에 대한 처리도 해야하므로, JPG보다 용량이 더 크다)
O 큼
GIF 8비트 색상 파일로써 0 ~ 255, 즉 256 컬러를 사용
(이미지베이스 애니메이션)
O 적음

 

 

 

 

✔︎ 압축

 

아리송한 부분인 압축 용어에 대해 정리하고 넘어가기로 했다.

 

- 압축

: 데이터 크기를 줄여서 저장공간을 효율적으로 잘 활용하기 위한 기술.

 

- 손실 압축

: 주로 멀티 데이터를 압축할 때 일어나며, 특성상 압축하는 과정에서 원본 데이터가 손상된다. 

 

- 무손실 압축 (Lossless compression)

: 압축을 하더라도 원본 데이터가 손상되지 않는다.

 

 

 

 

✔️ JPG vs PNG

 

: PNG는 투명도, 즉 알파값을 처리할 수 있다. JPG는 투명처리가 불가하다. 또한, 일정부분 손상이 나도 육안상 차이가 나지 않기 때문에 풍경과 같은 배경 이미지는 JPG가 더 적합하며, 텍스트 기반 (북스캔, 문서)나 도형 표시 등은 무손실 압축의 PNG가 손상도가 낮아 활자에 대한 가독성이 올라가기 떄문에 PNG를 사용하는 게 더 적합하다.

 

 

 

 

- 벡터(Vector)란?

 

📖 점과 점을 연결해 수학적 원리로 그림을 그려 표현하는 방식으로, 일정 사이즈 이상 확대하더라도 화질이 깨지는 게 없다.

 

 

 

 

 

 

📌 이미지 용량을 줄이는 방법

 

✔️ 리사이징을 하는 것이 권장된다.

 

- 이미지에 대한 다운샘플링을 한다 → 이미지에 대한 압축을 의미함.

 

: 하는 이유는 이미지를 디코딩할 때, CPU의 사용률이 증가하는데 메모리 관점에서 효율적이지 못하기 때문에 이미지 데이터를 받을 때는 리사이징이 필요하다. 예를 들어, 사이즈가 큰 이미지를 받아올 때 CPU가 과부화 되면 메모리 부족으로 앱이 터질 수도 있어서 이걸 사전에 방지하고자! 리사이징을 한다.

 

 

 

 

 

 


 

 

저작자표시 (새창열림)

'⚙️ CS' 카테고리의 다른 글

[CS] 이미지 캐시  (1) 2024.04.03
'⚙️ CS' 카테고리의 다른 글
  • [CS] 이미지 캐시
Callie_
Callie_
  • Callie_
    CalliOS
    Callie_
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 🍎 APPLE
      • 🍎 Dev
        • Swift
        • UIKit
        • SwiftUI
        • Issue
        • 구현
      • 🍎 Design
        • HIG
      • ⚙️ CS
      • 💡 알고리즘
        • 프로그래머스
        • 백준
      • 🏟️ 직관로그 (출시앱)
        • 업데이트
      • 🌱 SeSAC iOS 3기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SeSAC
    assets
    ios
    apply
    .OverFullScreen
    Snapshot
    화면전환
    IBAction
    Enum
    diffable
    SwiftUI
    IBOutlet
    layer.shadow
    DidEndOnExit
    .fullScreen
    cornerradius
    생명주기
    stroyboard
    modalPresentStyle
    TapGestureRecognizer
    CocoaTouchFramework
    clipsToBound
    TableViewCell
    Info탭
    DiffableDataSource
    Swift
    Entry Point
    CustomView
    네트워크통신
    addTarget
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Callie_
[CS] 이미지
상단으로

티스토리툴바