すべてのプロダクト
Search
ドキュメントセンター

:OSS SDK for Goを使用したIMG

最終更新日:Feb 22, 2024

イメージ処理 (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パラメーター」をご参照ください。