I have a similar issues like How to upload a bytes image on Google Cloud Storage from a Python script.
I tried this
from google.cloud import storage
imp
You are calling blob = bucket.get_blob(gcs_image)
which makes no sense. get_blob()
is supposed to get a string argument, namely the name of the blob you want to get. A name. But you pass a file object.
I propose this code:
with TemporaryFile() as gcs_image:
image.tofile(gcs_image)
gcs_image.seek(0)
blob = bucket.blob('documentation-screenshots/operations/15.png')
blob.upload_from_file(gcs_image)
As suggested by @A.Queue in(gets deleted after 29 days)
from google.cloud import storage
import cv2
from tempfile import TemporaryFile
client = storage.Client()
bucket = client.get_bucket('test-bucket')
image=cv2.imread('example.jpg')
with TemporaryFile() as gcs_image:
image.tofile(gcs_image)
gcs_image.seek(0)
blob = bucket.blob('example.jpg')
blob.upload_from_file(gcs_image)
The file got uploaded,but uploading a numpy ndarray
doesn't get saved as an image file on the google-cloud-storage
PS:
numpy array
has to be convert into any image format before saving.
This is fairly simple, use the tempfile
created to store the image, here's the code.
with NamedTemporaryFile() as temp:
#Extract name to the temp file
iName = "".join([str(temp.name),".jpg"])
#Save image to temp file
cv2.imwrite(iName,duplicate_image)
#Storing the image temp file inside the bucket
blob = bucket.blob('ImageTest/Example1.jpg')
blob.upload_from_filename(iName,content_type='image/jpeg')
#Get the public_url of the saved image
url = blob.public_url