일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- db에로그저장
- gitbranch추가
- 욜로모델
- importjetson
- root접근하기
- 리눅스selinux
- 빈생성에러
- git협업하기
- 운암동돈까스맛집
- ls-ld
- fastapi
- 리눅스
- 레벨분리
- 표준프레임워크
- opencvwithcudano
- 운암동점심
- (✿´‿`)
- jsp렌더링
- gitfetchpull
- 스프링부트로깅
- 우분투1804
- install에러
- git최신코드반영
- 로그아웃정의
- 파이썬경로설정
- 스프링부트
- 권한확인명령어
- 광주광역시운암동
- git명령어
- CSS
- Today
- Total
개발자 구겹이
인코딩 디코딩 바이너리 이미지 본문
Encoding Decoding
컴퓨터와 사람이 소통을 하는데 있어서는 통역자가 필요하다.
사람들 중에서는 그 역할을 수행하는 것이 프로그래머라고 할 수 있지.
고로 저는 통역자가 되기 위한 공부를 합니다.

● 인코딩 : 컴퓨터가 알아먹을 수 있는 날 것으로 변환하는 것
● 디코딩 : 인코딩한 데이터를 다시금 사람들이 알아 볼 수 있는 형태로 변환하는 것
바이너리 데이터로 인코딩하고
아스키코드로 디코딩한다.
바이너리 데이터와 아스키 코드 사이에는 또 매개체'base64'가 필요하다.
디테일한 것들을 아래에 정리해 두자 ○ ' ▽ ' ○
Binary : 0, 1 로 이루어진 데이터
|
V
base64 : 이미지 데이터를 전송하거나 이진 데이터를 텍스트 형식으로 사용할 때 사용한다.우리가 사용하는 프레임워크에서 이미지를 파일의 형태나 바이너리 형태로 전송하는 과정이 매끄럽지 못할 때가 있는데, 그럴 때 base64를 활용한 변환으로 데이터를 자유로이 해볼 수 있다.
[저장] Image File > Binary > with open 'wb'
1 >
pip install pillow
from PIL import Image
import io
with Image.open(이미지있는 경로) as img:
buffer = io.BytesIO()
img.save(buffer, format=img.format)
buffer.getvalue() 로 이미지를 바이너리한 데이터를 겟함
2 >
with open(저장할경로, 'wb') as f:
f.write(바이너리한 데이터)
>> 이미지 열기 (PIL.Image.open) > BytesIO객체 생성 및 이미지 저장(io.BytesIO):메모리에 바이너리 데이터를 저장가능한 버퍼 객체를 생성 후 Image객체를 포맷에 맞춰 저장하는 것> BytesIO 객체에 저장된 바이너리 데이터(buffer.getvalue()) > 바이너리화한 이미지데이터를 저장 (with open .. 'wb' as f : f.write(b''..))
[불러오기] Binary > Image
> >
@app.get("/images/{image_id}") def get_image(image_id: int, db: Session = Depends(get_db)):
image_data = db.query(ImageData).filter(ImageData.id == image_id).first()
if image_data is None:
raise HTTPException(status_code=404, detail="Image not found")
return Response(content=image_data.image, media_type="image/jpeg")
일단 정리된 흐름은 위와 같고, 실제로 적용해보아야겠슴.
개발짜팟팅
'padding' 카테고리의 다른 글
면접준비 꿀팁! (6) | 2024.10.31 |
---|---|
git 나만을 위한 업로드 (0) | 2024.09.23 |