base64로 인코딩 된 이미지를 디코딩 할 수 없습니다.

사냥꾼

저는 파이썬을 처음 사용합니다. 이미지를 가져 와서 이미지를 반환하는 API 끝점을 빌드하는 작업이 있습니다. 그래서 저는 flask제 일을 끝내기로 결정했습니다 .

나는이 질문을 따랐다- 플라스크 기반 API 가 API 끝점에 대한 파일반환하여 이미지 파일을 업로드 할 수 있습니까 ?

코드는 다음과 같습니다.

from flask import Flask, render_template , request , jsonify
from PIL import Image
import os , io , sys
import numpy as np 
import cv2
import base64

app = Flask(__name__)

start_point = (0, 0) 
end_point = (110, 110) 
color = (255, 0, 0)
thickness = 2

@app.route('/image' , methods=['POST'])
def mask_image():
    file = request.files['image'].read()
    npimg = np.fromstring(file, np.uint8)
    img = cv2.imdecode(npimg,cv2.IMREAD_COLOR)
    img = Image.fromarray(img.astype("uint8"))
    rawBytes = io.BytesIO()
    img.save(rawBytes, "png")
    rawBytes.seek(0)
    img_base64 = base64.b64encode(rawBytes.read())
    return jsonify({'status':str(img_base64)})


if __name__ == '__main__':
    app.run(debug = True)

그런 다음 파이썬 요청 파일 업로드를 사용하여 API에 요청을 보냈습니다 .

하지만 base64 응답을 디코딩 할 수 없습니다. 내가 시도한 코드

import requests
import base64

files = {'image': open('image.png','rb')}
r = requests.post("http://localhost:5000/image", files=files)
print(base64.decodestring(r.text))

하지만 그것은 오류를 던지고

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~/anaconda3/envs/py37/lib/python3.7/base64.py in _input_type_check(s)
    509     try:
--> 510         m = memoryview(s)
    511     except TypeError as err:

TypeError: memoryview: a bytes-like object is required, not 'str'

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
<ipython-input-192-e8ba5f9daae3> in <module>
----> 1 base64.decodestring(r.text)

~/anaconda3/envs/py37/lib/python3.7/base64.py in decodestring(s)
    552                   "use decodebytes()",
    553                   DeprecationWarning, 2)
--> 554     return decodebytes(s)
    555
    556

~/anaconda3/envs/py37/lib/python3.7/base64.py in decodebytes(s)
    543 def decodebytes(s):
    544     """Decode a bytestring of base-64 data into a bytes object."""
--> 545     _input_type_check(s)
    546     return binascii.a2b_base64(s)
    547

~/anaconda3/envs/py37/lib/python3.7/base64.py in _input_type_check(s)
    511     except TypeError as err:
    512         msg = "expected bytes-like object, not %s" % s.__class__.__name__
--> 513         raise TypeError(msg) from err
    514     if m.format not in ('c', 'b', 'B'):
    515         msg = ("expected single byte elements, not %r from %s" %

TypeError: expected bytes-like object, not str

이미지를 어떻게 디코딩합니까?

큰 현상금

태그가 달린 대답은 내 것입니다. 따라서 답을 제공하겠습니다.

@ToxicCode 사용자 중 한 명이 이미 99 %의 답변을 제공했습니다. 그러나 여기에 문제가 있습니다. 스크립트는 아래와 같은 문자열로 싸인 바이트 문자열로 응답을 보냅니다.

"b'iVBORw0KGgoAAAANSUhEUgAABXYAAAOOCAIAAAAru93tAAEAAElEQVR4nOz9eZRk+V3ffX5+98a+ZkbutbZ2gZAx6DFgsEGHHRtrsC0xFgezGGg3to8H2+NlQGjmSAI/D4wfGD/40AiZRTDgBwkMGI9AwjoCzGLZgLHYZEmou5bMjFwiMjPWu37nj4iqzOqur
...
..

바이트 b는 이미 문자열에 있습니다. 따라서 @ToxicCode를 따르면 이것을 처리하지 않고 오류가 발생합니다. 따라서 나쁜 접근 방식 ast.literal_eval으로 문자열로 변환 한 다음 @ToxicCode 코드를 따르는 데 사용할 수 있습니다 .

중요 참고 사항 :ast.literal_eval() 프로덕션 서버에서 사용하지 마십시오 . 그에 따라 구현을 변경하십시오.

import ast
import requests
import base64

files = {'image': open('image.png','rb')}
r = requests.post("http://localhost:5000/image", files=files)
data = ast.literval_eval(r.json()['status'])
print(base64.b64decode(data))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Java로 인코딩 된 PHP에서 base64로 데이터를 디코딩 할 수 있습니까?

분류에서Dev

Base 64로 인코딩 된 QRGen QR 코드를 디코딩 할 수 없습니다.

분류에서Dev

워터 마크 용으로 base64로 인코딩 된 이미지를 처리 할 수 있습니까?

분류에서Dev

base64에서 디코딩 된 인 텐트에서 이미지를 열 수 없습니다.

분류에서Dev

XUGGLER로 인코딩 된 오디오를 재생할 수 없습니다.

분류에서Dev

PHP로 인코딩 된 일부 utf-8 문자열 base64는 iOS base64 라이브러리를 사용하여 디코딩 할 수 없습니까?

분류에서Dev

base64 인코딩 문자열 : PHP에서는 디코딩 할 수 있지만 Java에서는 디코딩 할 수 없습니까?

분류에서Dev

이메일 HTML Velocity 템플릿에 base64로 인코딩 된 이미지를 삽입 할 수없는 이유는 무엇입니까?

분류에서Dev

Chrome 브라우저에 표시된 Base64 인코딩 PDF를 다운로드 할 수 없음

분류에서Dev

base64로 인코딩 된 shaX 바이너리 문자열을 어떻게 해독 할 수 있습니까?

분류에서Dev

rabbitmq 대기열의 base64 '페이로드'문자열을 제대로 디코딩 할 수 없습니다.

분류에서Dev

파이썬은 utf-8로 인코딩 할 수 있지만 디코딩 할 수 없습니다.

분류에서Dev

ASP 사이트에서 알 수없는 형식으로 인코딩 된 URL을 디코딩 할 수 없습니다.

분류에서Dev

openssl이 PHP의 base64_encode 함수로 인코딩 된 문자열을 디코딩 할 수없는 이유는 무엇입니까?

분류에서Dev

base64로 인코딩 된 이미지를 이미지로

분류에서Dev

소켓을 통해 수신 된 배열 요소 (문자열로 인코딩 됨)를 디코딩 할 수 없습니다.

분류에서Dev

base64로 인코딩 된 파일을 디코딩하고 결과를 콘솔에 인쇄합니다.

분류에서Dev

DOMException : 소스 이미지를 디코딩 할 수 없습니다.

분류에서Dev

PHP를 사용하여 16 비트에서 BASE64로 인코딩 된 부호있는 정수 디코딩

분류에서Dev

쉽게 디코딩 할 수있는 경우 base64로 문자열을 인코딩하는 이유

분류에서Dev

base64로 인코딩 된 파일 이름 목록을 어떻게 디코딩합니까?

분류에서Dev

FFMPEG는 빠른 속도로 비디오를 인코딩 할 수 없습니다.

분류에서Dev

NSManagedObject를 인코딩 및 디코딩 할 수 있습니까?

분류에서Dev

PHP에서 base64 인코딩 이미지를 어떻게 선명하게 할 수 있습니까?

분류에서Dev

tastypie로 JSON 개체를 디코딩 할 수 없습니다.

분류에서Dev

다시 인코딩 될 때 (base64로) base64 문자열의 디코딩 된 값이 다른 출력을 제공합니다.

분류에서Dev

유효한 Base64 문자열을 디코딩 할 수 없습니다.

분류에서Dev

Base64 문자열을 신속하게 디코딩 할 수 없습니다.

분류에서Dev

문자를 base64로 인코딩 할 때 다른 결과

Related 관련 기사

  1. 1

    Java로 인코딩 된 PHP에서 base64로 데이터를 디코딩 할 수 있습니까?

  2. 2

    Base 64로 인코딩 된 QRGen QR 코드를 디코딩 할 수 없습니다.

  3. 3

    워터 마크 용으로 base64로 인코딩 된 이미지를 처리 할 수 있습니까?

  4. 4

    base64에서 디코딩 된 인 텐트에서 이미지를 열 수 없습니다.

  5. 5

    XUGGLER로 인코딩 된 오디오를 재생할 수 없습니다.

  6. 6

    PHP로 인코딩 된 일부 utf-8 문자열 base64는 iOS base64 라이브러리를 사용하여 디코딩 할 수 없습니까?

  7. 7

    base64 인코딩 문자열 : PHP에서는 디코딩 할 수 있지만 Java에서는 디코딩 할 수 없습니까?

  8. 8

    이메일 HTML Velocity 템플릿에 base64로 인코딩 된 이미지를 삽입 할 수없는 이유는 무엇입니까?

  9. 9

    Chrome 브라우저에 표시된 Base64 인코딩 PDF를 다운로드 할 수 없음

  10. 10

    base64로 인코딩 된 shaX 바이너리 문자열을 어떻게 해독 할 수 있습니까?

  11. 11

    rabbitmq 대기열의 base64 '페이로드'문자열을 제대로 디코딩 할 수 없습니다.

  12. 12

    파이썬은 utf-8로 인코딩 할 수 있지만 디코딩 할 수 없습니다.

  13. 13

    ASP 사이트에서 알 수없는 형식으로 인코딩 된 URL을 디코딩 할 수 없습니다.

  14. 14

    openssl이 PHP의 base64_encode 함수로 인코딩 된 문자열을 디코딩 할 수없는 이유는 무엇입니까?

  15. 15

    base64로 인코딩 된 이미지를 이미지로

  16. 16

    소켓을 통해 수신 된 배열 요소 (문자열로 인코딩 됨)를 디코딩 할 수 없습니다.

  17. 17

    base64로 인코딩 된 파일을 디코딩하고 결과를 콘솔에 인쇄합니다.

  18. 18

    DOMException : 소스 이미지를 디코딩 할 수 없습니다.

  19. 19

    PHP를 사용하여 16 비트에서 BASE64로 인코딩 된 부호있는 정수 디코딩

  20. 20

    쉽게 디코딩 할 수있는 경우 base64로 문자열을 인코딩하는 이유

  21. 21

    base64로 인코딩 된 파일 이름 목록을 어떻게 디코딩합니까?

  22. 22

    FFMPEG는 빠른 속도로 비디오를 인코딩 할 수 없습니다.

  23. 23

    NSManagedObject를 인코딩 및 디코딩 할 수 있습니까?

  24. 24

    PHP에서 base64 인코딩 이미지를 어떻게 선명하게 할 수 있습니까?

  25. 25

    tastypie로 JSON 개체를 디코딩 할 수 없습니다.

  26. 26

    다시 인코딩 될 때 (base64로) base64 문자열의 디코딩 된 값이 다른 출력을 제공합니다.

  27. 27

    유효한 Base64 문자열을 디코딩 할 수 없습니다.

  28. 28

    Base64 문자열을 신속하게 디코딩 할 수 없습니다.

  29. 29

    문자를 base64로 인코딩 할 때 다른 결과

뜨겁다태그

보관