Google App Engine의 Images API란 무엇입니까(+Go 샘플 구현)
Images API란?
Cloud Storage에 저장된 이미지에 대해 매개 변수를 사용하여 동적 크기를 조정하고 잘라내는 공개 URL을 게시합니다.
자전으로 화상의 리사이즈 처리를 쓰지 않아도, 간단하게 썸네일용의 화상등을 전달할 수 있어 매우 편리합니다.
서비스 URL 이미지 처리 매개 변수
URL의 끝에
=s32
와 같은 문자열을 붙여 동적으로 처리된 이미지를 얻을 수 있습니다.처리
파라미터 예
너비 32px에 맞게 크기 조정
http://lh*.googleusercontent.com/xxxxxxx=s32
32x32px 사각형으로 크기 조정 + 자르기
http://lh*.googleusercontent.com/xxxxxxx=s32-c
Go로 구현해보기
Cloud Storage에 저장된 파일의 Serving URL을 생성하는 최소한의 Google App Engine 구현을 Go로 작성해 보았습니다.
package main
import (
"context"
"fmt"
"google.golang.org/appengine"
"google.golang.org/appengine/blobstore"
"google.golang.org/appengine/image"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
ctx := appengine.NewContext(r)
// Cloud Storage のファイルの情報を次の2変数に入れる
cloudStorageBucketID := "<BucketID>"
cloudStorageObjectID := "<ObjectID>"
servingURL, err := generateServingUrl(ctx, cloudStorageBucketID, cloudStorageObjectID)
if err != nil {
fmt.Fprintf(w, "[error!] %s", err)
return
}
fmt.Fprintf(w, "Serving URL: %s", servingURL)
}
// Serving URL を生成する
func generateServingUrl(ctx context.Context, bucketID, objectID string) (string, error) {
// Cloud Storage にあるファイルの指定方法は /gs/<bucketID>/<objectID> で決まっています
// https://cloud.google.com/appengine/docs/standard/go/blobstore/reference#BlobKeyForFile
gsURL := fmt.Sprintf("/gs/%s/%s", bucketID, objectID)
// Cloud Storage の指定から Serving URL 生成に渡すためには blobstore key 形式で渡す必要があります
// https://cloud.google.com/appengine/docs/standard/go/images/#serving_images_from_cloud_storage_using_the_blobstore_api
blobKey, err := blobstore.BlobKeyForFile(ctx, gsURL)
if err != nil {
return "", err
}
// Serving URL を生成
servingURLOpts := &image.ServingURLOptions{Secure: true}
url, err := image.ServingURL(ctx, blobKey, servingURLOpts)
if err != nil {
return "", err
}
return url.String(), nil
}
이 코드를 App Engine에 배포한 후 액세스하면 Serving URL이 브라우저에 출력됩니다.
말미에
=s200
와 같이 파라미터를 붙여, 리사이즈 되는지 시험해 봅시다!주의점
Images API는 App Engine에서만 사용할 수 있습니다.
Cloud Storage API에서 직접 할 수 있다고 생각했지만 Images API는 AppEngine의 API이므로 Cloud Storage API가 아니기 때문에 무리였습니다.
Cloud Storage 측에도 Images API 상당한 기능을 제공하고 싶다는 의견은 있는 것 같습니다. 앞으로 기대!
Serving URL은 누구나 액세스할 수 있습니다.
생성되는 URL은 랜덤 캐릭터 라인이 붙어 있으므로, 추측은 어렵습니다만, URL 자체는 누구라도 액세스 할 수 있는 상태가 되어 있습니다.
생성자의 cloud storage 객체가 비공개이어도, Servering URL 의 이미지는 항상 공개 상태가 됩니다.
로컬 개발 서버에서 정상적인 Serving URL을 생성할 수 없음
goapp serve
와 같은 로컬 개발 서버를 사용하면(자), 정상적인 Serving URL 는 생성되지 않고 다음과 같은 가의 URL이 됩니다.http://localhost:8080/_ah/img/encoded_gs_file:PEJ1Y2tldElEPi88T2JqZWN0SUQ-
참고 사이트
Reference
이 문제에 관하여(Google App Engine의 Images API란 무엇입니까(+Go 샘플 구현)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/castaneai/items/fa882033a5d03aded102텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)