Thanks to anyone that can help with this, its my first question so hopefully it's not super obvious.
I Have an image that's being passed as a base64 string (using slim image cropper). I want to convert that to a file then send it to Google Storage as a blob.
Previously I've been just sending the file like below
image = request.files.get('image')
client = _get_storage_client()
bucket = client.bucket(current_app.config['CLOUD_STORAGE_BUCKET'])
blob = bucket.blob(filename)
blob.upload_from_string(
image.read(),
content_type=content_type)
Now I'm dealing with the below code.
cropped_image = json.loads(request.form.get('slim[]'))
data = cropped_image['output']['image']
data variable is a string:
data = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...'
i'm stuck not sure if I need to encode to base64, decode from base64, turn it to a bytestring then encode/decode??
I've tried just sending it as is using bytesIO and StringIO
image = BytesIO(data)
blob.upload_from_string(
image.read(),
content_type=content_type)
and I get a black picture uploaded, really try to not ask questions without researching first but this one has me stumped.
Thanks.
re.sub("data:image/jpeg;base64,", '', b64_str).decode("base64")
works in Python2. In Py 2, the str
is bytes
actually.
UPDATE
from base64 import b64decode
with open("test.jpeg", 'wb') as f:
f.write(b64decode(re.sub("data:image/jpeg;base64,", '', b64_str)))
# or
image = BytesIO(b64decode(re.sub("data:image/jpeg;base64", '', b64_str)))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With