Images API 可讓您直接利用 Cloud Storage 或 Blobstore 來提供圖片,並能夠即時控管這些圖片。如要查看 image 套件內容,請參閱 image 套件參考資料。
Cloud Storage bucket 必須使用精細的存取控制清單,Images API 才能運作。如果值區已設定為統一值區層級存取權,Images API 就無法擷取該值區中的圖片,並會擲回 TransformationError 錯誤訊息。如果您的 bucket 是以這種方式設定,可以停用統一 bucket 層級存取權。
從 Cloud Storage 提供圖片時,Images API 會使用 Google 管理的服務帳戶 (dynamic_image_service@system.gserviceaccount.com) 擷取圖片。系統通常會為您完成這項操作,但如果服務帳戶在 bucket 中沒有 Storage Object Viewer 角色,您可能會遇到間歇性的 403 Forbidden 錯誤。如果 Google 的放送快取中沒有圖片,就必須從原始值區擷取圖片,這時就會發生這種情況。
如要授予必要權限,請執行下列 gcloud 指令:
gcloud storage buckets add-iam-policy-binding gs://[BUCKET_NAME] \
--member=serviceAccount:dynamic_image_service@system.gserviceaccount.com \
--role=roles/storage.objectViewer
圖片格式
此服務可以接受 JPEG、PNG、WEBP、GIF (包括動畫 GIF)、BMP、TIFF 及 ICO 格式的圖片資料,轉換後的圖片可利用 JPEG、WEBP 及 PNG 格式傳回。
如果輸入格式與輸出格式不同,此服務會先將輸入資料轉換成輸出格式,然後再執行轉換作業。
提供圖片及調整圖片大小
image.ServingURL 函式可用來產生穩定的專用網址,以便提供適合在網路上使用的圖片縮圖。
您可以在 Blobstore 儲存原始圖片的單一複本,然後要求每張圖片的高效能網址,這些網址可以自動提供大小經調整及/或經裁剪的圖片。從這個網址提供圖片並不會在應用程式上產生 CPU 或動態服務負載 (但頻寬仍會照常計費)。
函式ˇ傳回的網址一律為公開,但無法猜測;目前尚未支援不公開的網址。如要停止提供網址,請使用 image.DeleteServingURL 函式將其刪除。
如果將 image.ServingURLOptions 值傳送至函式,函式會傳回採用這些選項編碼的網址。如果傳遞 nil,函式會傳回圖片的預設網址,例如:
。 API 的其餘部分會如預期運作。
execute_transforms() 方法會傳回轉換結果,如果結果大於 32 MB 的上限,則會傳回 LargeImageError。
使用
get_serving_url()
get_serving_url() 方法可讓您針對儲存於 Cloud Storage 或 Blobstore 的圖片,產生固定的專屬網址。
產生的網址會使用獨立於您的應用程式之外的高度最佳化圖片提供基礎架構。由於圖片是獨立於您的應用程式之外提供,因此不會產生負載,且極具成本效益。此方法傳回的 URL 一定可公開存取,但無法猜測。
如要停止提供網址,請使用
image.DeleteServingURL 函式。
這個方法會傳回使用指定的大小和裁剪引數編碼的網址。如果您未指定任何引數,這個方法會傳回圖片的預設網址,例如:
http://lhx.ggpht.com/randomStringImageId
您可以在網址中指定引數,以動態方式調整圖片大小及裁剪圖片。可用的引數為:
=sxx,其中xx為 0 到 2560 的整數,代表圖片最長邊的長度 (以像素為單位)。例如,加入=s32可調整圖片大小,使其最長尺寸成為 32 像素。=sxx-c,其中 xx 為 0 至 2560 的整數,代表裁剪後的圖片大小 (以像素為單位),-c會告知系統要裁剪圖片。
# Resize the image to 32 pixels (aspect-ratio preserved) http://lhx.ggpht.com/randomStringImageId=s32 # Crop the image to 32 pixels http://lhx.ggpht.com/randomStringImageId=s32-c
使用 Blobstore API 從 Cloud Storage 提供圖片
如果您將 Cloud Storage 當作資料存放區,並使用 Blobstore API 提供圖片,您就需要建立 Cloud Storage 物件的 blob 金鑰。
刪除注意事項
如要停止提供儲存於 Cloud Storage 或 Blobstore 的圖片,請呼叫
image.DeleteServingURL 函式。
您應避免直接在 Cloud Storage 或 Blobstore 刪除圖片,這樣可能會讓圖片仍可透過提供網址進行存取。
如果停用或刪除建立提供網址的應用程式,提供網址將會停止運作,即使基礎圖片仍可使用也一樣。