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

Object Storage Service:イメージ処理 (Go SDK V1)

最終更新日:Nov 29, 2025

イメージ処理は、Object Storage Service (OSS) の機能の 1 つで、大規模で安全、コスト効率が高く、信頼性の高いイメージ処理サービスを提供します。 イメージを OSS にアップロードした後、シンプルな RESTful インターフェイスを使用して、いつでも、どこでも、インターネットに接続された任意のデバイスからイメージを処理できます。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。 OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、環境変数からアクセス認証情報を取得します。 アクセス認証情報の設定方法の詳細については、「アクセス認証情報の設定」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。 カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「クライアントの設定 (Go SDK V1)」をご参照ください。

イメージ処理パラメーターを使用したイメージの処理

  • 単一のイメージ処理パラメーターでイメージを処理し、ローカルファイルとして保存

    package main
    
    import (
    	"fmt"
    	"os"
    
    	"github.com/aliyun/aliyun-oss-go-sdk/oss"
    )
    
    func HandleError(err error) {
    	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 インスタンスを作成します。
    	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
    	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用します。
    	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    	clientOptions = append(clientOptions, oss.Region("yourRegion"))
    	// 署名バージョンを設定します。
    	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    	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 px の固定値に変更し、ローカルに保存します。
    	style := "image/resize,m_fixed,w_100,h_100"
    	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
    	if err != nil {
    		HandleError(err)
    	}
    }
    
  • 複数のイメージ処理パラメーターでイメージを処理し、ローカルファイルとして保存

    複数のイメージ処理パラメーターを使用する場合は、スラッシュ (/) で区切ります。

    package main
    
    import (
    	"fmt"
    	"os"
    
    	"github.com/aliyun/aliyun-oss-go-sdk/oss"
    )
    
    func HandleError(err error) {
    	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 インスタンスを作成します。
    	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
    	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用します。
    	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    	clientOptions = append(clientOptions, oss.Region("yourRegion"))
    	// 署名バージョンを設定します。
    	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    	if err != nil {
    		HandleError(err)
    	}
    
    	// ソースイメージが格納されているバケットの名前 (examplebucket など) を指定します。
    	bucketName := "examplebucket"
    	bucket, err := client.Bucket(bucketName)
    	if err != nil {
    		HandleError(err)
    	}
    
    	// ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリにない場合は、exampledir/example.jpg などのイメージの完全なパスを含めます。
    	sourceImageName := "exampledir/example.jpg"
    	// 処理されたイメージの名前を指定します。
    	targetImageName := "exampledir/newexample.jpg"
    	// イメージのサイズを幅と高さが 100 px の固定値に変更し、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)
    	}
    }
    

スタイルを使用したイメージの処理

複数のイメージ処理パラメーターをスタイルにカプセル化し、そのスタイルを使用してイメージをバッチ処理できます。 詳細については、「イメージスタイル」をご参照ください。 次のコードは、スタイルを使用してイメージを処理する方法を示しています。

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	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 インスタンスを作成します。
	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用します。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名バージョンを設定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		HandleError(err)
	}

	// ソースイメージが格納されているバケットの名前 (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 操作を使用して、処理されたイメージを指定したバケットに保存できます。

package main

import (
	"encoding/base64"
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	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 インスタンスを作成します。
	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用します。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名バージョンを設定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	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"
	// イメージのサイズを幅と高さが 100 px の固定値に変更し、指定したバケットに保存します。
	style := "image/resize,m_fixed,w_100,h_100"
	process := fmt.Sprintf("%s|sys/saveas,o_%v,b_%v", style, base64.URLEncoding.EncodeToString([]byte(targetImageName)), base64.URLEncoding.EncodeToString([]byte(targetBucketName)))
	result, err := bucket.ProcessObject(sourceImageName, process)
	if err != nil {
		HandleError(err)
	} else {
		fmt.Println(result)
	}
}

イメージ処理パラメーターを含むファイルの署名付き URL の生成

非公開ファイルのアクセス URL には署名が含まれています。 OSS は、署名付き URL にイメージ処理パラメーターを直接追加することをサポートしていません。 非公開ファイルを処理するには、署名にイメージ処理パラメーターを追加する必要があります。 次のコードに例を示します。

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	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 インスタンスを作成します。
	// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
	// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを cn-hangzhou に設定します。 他のリージョンについては、実際のリージョンを使用します。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 署名バージョンを設定します。
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	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"
	// 600 秒後に有効期限が切れる署名付き URL を生成します。 最大有効期間は 32,400 秒です。
	signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
	if err != nil {
		HandleError(err)
	} else {
		fmt.Println(signedURL)
	}
}

関連ドキュメント

イメージ処理でサポートされているパラメーターの詳細については、「イメージ処理」をご参照ください。