개발자 구겹이

인코딩 디코딩 바이너리 이미지 본문

padding

인코딩 디코딩 바이너리 이미지

@layers9 2024. 8. 5. 11:49

Encoding Decoding 

 

컴퓨터와 사람이 소통을 하는데 있어서는 통역자가 필요하다. 

사람들 중에서는 그 역할을 수행하는 것이 프로그래머라고 할 수 있지.

고로 저는 통역자가 되기 위한 공부를 합니다.

 

 

 

 

 

 

 

 

● 인코딩 : 컴퓨터가 알아먹을 수 있는 날 것으로 변환하는 것

  디코딩 : 인코딩한 데이터를 다시금 사람들이 알아 볼 수 있는 형태로 변환하는 것 

 

 

 

designed by 박구월 ∑ദ്ദി˙◡・)

 

 

 

 

바이너리 데이터로 인코딩하고 

아스키코드로 디코딩한다.

 

바이너리 데이터와 아스키 코드 사이에는 또 매개체'base64'가 필요하다.

 

 

 

 

 

디테일한 것들을 아래에 정리해 두자     ' ▽ '


 

 

Binary  : 0, 1 로 이루어진 데이터

 

    |

   V

출처 : https://velog.io/@wns450/%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%9D%B8%EC%BD%94%EB%94%A9-%EB%B0%A9%EC%8B%9D

 

 

 

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