3

pythonスクリプトからGoogle Cloud Storageに画像をアップロードします。コードが動作し、正しくクラウドストレージ上の私のイメージを保存PythonスクリプトからGoogle Cloud Storageにバイトイメージをアップロードする方法

from oauth2client.service_account import ServiceAccountCredentials 
from googleapiclient import discovery 

scopes = ['https://www.googleapis.com/auth/devstorage.full_control'] 
credentials = ServiceAccountCredentials.from_json_keyfile_name('serviceAccount.json', scop 
es) 
service = discovery.build('storage','v1',credentials = credentials) 

body = {'name':'my_image.jpg'} 

req = service.objects().insert(
    bucket='my_bucket', body=body, 
    media_body=googleapiclient.http.MediaIoBaseUpload(
     gcs_image, 'application/octet-stream')) 

resp = req.execute() 

gcs_image = open('img.jpg', 'r')場合:これは私のコードです。バイトイメージを直接アップロードするにはどうすればよいですか? (OpenCVの/ numpyのアレイから例えば:gcs_image = cv2.imread('img.jpg')

答えて

0

MediaIoBaseUpload期待しio.Base様オブジェクトとエラー以下上げる:

'numpy.ndarray' object has no attribute 'seek' 

ndarrayオブジェクトを受信します。私はgoogleapiclientが非慣用だけ(それはもう開発されていない)メンテナンスであることに注意してください

from oauth2client.service_account import ServiceAccountCredentials 
from googleapiclient import discovery 
import googleapiclient 
import numpy as np 
import cv2 
from tempfile import TemporaryFile 


scopes = ['https://www.googleapis.com/auth/devstorage.full_control'] 
credentials = ServiceAccountCredentials.from_json_keyfile_name('serviceAccount.json', scopes) 
service = discovery.build('storage','v1',credentials = credentials) 

body = {'name':'my_image.jpg'} 
with TemporaryFile() as gcs_image: 
    cv2.imread('img.jpg').tofile(gcs_image) 
    req = service.objects().insert(
     bucket='my_bucket’, body=body, 
     media_body=googleapiclient.http.MediaIoBaseUpload(
      gcs_image, 'application/octet-stream')) 

    resp = req.execute() 

TemporaryFilenumpy.ndarray().tofile()を使用していますそれを解決するには。 idiomatic oneを使用することをおすすめします。

関連する問題