イメージ処理 (IMG) は、イメージの処理を支援するためにObject Storage service (OSS) によって提供される、安全で費用対効果の高い信頼性の高いイメージ処理サービスです。 ソースイメージをOSSにアップロードした後、RESTful APIを呼び出して、いつでもどこでも、接続されたデバイスでイメージを処理できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSTS (Security Token Service) を使用してOSSClientインスタンスを作成する場合は、「初期化」をご参照ください。
IMGパラメータを使用した画像処理
単一のIMGパラメータを使用して画像を処理し、処理した画像をローカルコンピュータに保存する
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { HandleError(err) } // ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" bucket, err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: Example /example.jpg sourceImageName := "yourObjectName" // 処理されたイメージの名前を指定します。 targetImageName := "LocalFileName" // 画像のサイズを100 × 100ピクセルに変更し、ローカルコンピューターに保存します。 style := "image/resize,m_fixed,w_100,h_100" err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style)) if err! =nil { HandleError(err) } }
複数のIMGパラメータを使用して画像を処理し、画像をローカルコンピュータに保存する
次のサンプルコードは、複数のIMGパラメーターを使用してイメージを処理する方法の例を示しています。 IMGパラメータは、スラッシュ (/) で区切られます。
パッケージメイン import (import (import) "fmt" "os" 「github.com/aliyun/aliyun-oss-go-sdk/oss」 ) func HandleError (エラーエラー) { fmt.Println("Error:", err) os.Exit(-1) } func main() { // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 provider, err := oss.NewEnvironmentVariableCredentialsProvider() if err! =nil { fmt.Println("Error:", err) os.Exit(-1) } // Create an OSSClient instance. // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。 client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider)) if err! =nil { HandleError(err) } // ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket. bucketName := "examplebucket" bucket, err := client.Bucket(bucketName) if err! =nil { HandleError(err) } // ソースイメージの名前を指定します。 ソースイメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg sourceImageName := "exampledir/example.jpg" // 処理されたイメージの名前を指定します。 targetImageName := "exampledir/newexample.jpg" // 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させてから、ローカルコンピューターに保存します。 style := "image/resize,m_fixed,w_100,h_100/rotate,90" err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style)) if err! =nil { HandleError(err) } }
画像スタイルを使用して画像を処理する
スタイル内に複数のIMGパラメータをカプセル化し、そのスタイルを使用してイメージを処理できます。 詳細については、「イメージスタイル」をご参照ください。 次のサンプルコードは、イメージスタイルを使用してイメージを処理する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClientインスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// ソースイメージの名前を指定します。 ソースイメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: Example /example.jpg
sourceImageName := "example/example.jpg"
// 処理した画像をnewexample.jpgとしてローカルコンピューターに保存します。
targetImageName := "D :\\ localpath\\newexample.jpg"
// イメージスタイルを使用してイメージを処理します。 yourCustomStyleNameをOSSコンソールで作成したイメージスタイルの名前に設定します。
style := "style/yourCustomStyleName"
// 処理した画像をローカルコンピューターに保存します。
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
if err! =nil {
HandleError(err)
}
}
処理された画像を保存する
ImgSaveAs操作を呼び出して、処理した画像を特定のバケットに保存できます。
パッケージメイン
import (import (import)
"encoding/base64"
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: srcbucket.
bucketName := "SourceBucketName"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// ソースイメージの名前を指定します。 ソースイメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: Example /example.jpg
sourceImageName := "yourObjectName"
// 処理されたイメージを保存するバケットの名前を指定します。 バケットは、ソースイメージが保存されているバケットと同じリージョンに配置する必要があります。
targetBucketName := "TargetBucketName"
// 処理されたイメージの名前を指定します。 処理されたイメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
targetImageName := "TargetObjectName"
// 画像のサイズを100x100ピクセルに変更し、画像を特定のバケットに保存します。
style := "image/resize,m_fixed,w_100,h_100"
process := fmt.Sprintf("% s | sys/saveas,o_% v,b_% v", style, base64.URLEncoding.EncodeToString([] バイト (targetImageName))), base64.URLEncoding.EncodeToString([] バイト (targetBucketName)))
result, err := bucket.ProcessObject(sourceImageName, process)
if err! =nil {
HandleError(err)
} else {
fmt.Println(result)
}
}
IMGパラメータを含む署名付きオブジェクトURLを生成する
プライベートオブジェクトのURLが署名されています。 署名付きURLの末尾にIMGパラメーターを直接追加することはできません。 プライベートオブジェクトを処理する場合は、署名にIMGパラメーターを追加します。 次のサンプルコードは、署名にIMGパラメーターを追加する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// イメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
ossImageName := "exampledir/example.jpg"
// IMGパラメータを含む署名付きURLを生成します。 署名付きURLの有効期間を600秒に設定します。
signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
if err! =nil {
HandleError(err)
} else {
fmt.Println(signedURL)
}
}
参考資料
サポートされているIMGパラメーターの詳細については、「IMGパラメーター」をご参照ください。