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

Object Storage Service:Rotate

最終更新日:Oct 14, 2024

rotateパラメーターを追加することで、OSSに保存されているイメージを時計回りに回転できます。 このトピックでは、イメージの回転に使用されるパラメーターについて説明し、イメージの回転方法の例を示します。

パラメーター

操作名: rotate

次の表に、設定できるパラメーターを示します。

パラメーター

説明

有効値

[値]

画像が時計回りに回転する程度。

[0,360]

デフォルト値:0 値0は、画像が回転されないことを示す。

使用上の注意

  • 画像を90 ° 、180 ° 、270 ° 、360 ° 回転させないと、処理画像のサイズが大きくなる。

  • 回転するイメージは、4096 × 4096ピクセルを超えることはできません。

  • 回転パラメータがアニメーションGIF画像に適用される場合、アニメーションGIF画像は静的GIF画像になる。

演算方法

パブリック読み取りイメージまたはパブリック読み取り /書き込みイメージを時計回りに回転

このトピックでは、中国 (杭州) リージョンのoss-console-img-demo-cn-hangzhouバケットで画像を回転させる方法の例を示します。 イメージは次のURLでホストされます。

プライベート画像を時計回りに回転

OSS SDKとOSS APIを使用して、プライベートイメージを時計回りに回転できます。

OSS SDKの使用

次のサンプルコードでは、プライベートイメージを時計回りに回転する方法の例を示します。 他のプログラミング言語のOSS SDKを使用してプライベートイメージを回転させる方法の詳細については、「SDKリファレンス」をご参照ください。

Java

Java 3.17.4以降のOSS SDKが必要です。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GetObjectRequest;
import java.io.File;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Specify the ID of the region that maps to the endpoint. Example: cn-hangzhou.
        String region = "cn-hangzhou";
        // Obtain access credentials from environment variables.Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Specify the name of the bucket. Example: examplebucket.
        String bucketName = "examplebucket";
        // Specify the full path of the source object. Do not include the bucket name in the full path.
        String objectName = "example.jpg";
        // Specify the full path of the processed image. Example: D:\\dest.jpg. If a file that has the same name already exists, the processed object overwrites the file. Otherwise, the processed object is saved in the path.
        String pathName = "D:\\dest.jpg";

        // Create an OSSClient instance.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Rotate the source image by 90 degrees clockwise.
            String image = "image/rotate,90";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Set the name of the processed image to dest.jpg and save it to your local computer.
            // If you specify only the name of the processed image such as dest.jpg without specifying the local path, the processed image is saved to the local path of the project to which the sample program belongs.
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

PHP 2.7.0以降のOSS SDKが必要です。

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;

// Obtain access credentials from environment variables.Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
$provider = new EnvironmentVariableCredentialsProvider();
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the name of the bucket. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the source object. Do not include the bucket name in the full path.
$object = "example.jpg";
// Specify the full path of the processed image. Example: D:\\dest.jpg. If a file with the same name already exists in the path, the processed image overwrites the file. Otherwise, the processed image is saved in the path.
// If you specify only the name of the processed image such as dest.jpg without specifying the local path, the processed image is saved to the local path of the project to which the sample program belongs.
$download_file = "D:\\dest.jpg";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Specify the ID of the Alibaba Cloud region in which the bucket is located.
        "region" => "cn-hangzhou"
    );
$ossClient = new OssClient($config);

// Rotate the source image by 90 degrees clockwise.
$image = "image/rotate,90";

$options = array(
    OssClient::OSS_FILE_DOWNLOAD => $download_file,
    OssClient::OSS_PROCESS => $image);

// Save the processed image to your local computer.
$ossClient->getObject($bucket, $object, $options);                           

Python

Python 2.18.4以降のOSS SDKが必要です。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the ID of the Alibaba Cloud region in which the bucket is located.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must include the full path of the image. Example: exampledir/src.gif.
key = 'example.jpg'
# Specify the name of the processed image.
new_pic = 'D:\\dest.jpg'

# Rotate the source image by 90 degrees clockwise.
image = 'image/rotate,90'
bucket.get_object_to_file(key, new_pic, process=image)

Go

Go 3.0.2以降のOSS SDKが必要です。

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() {
	// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Create an OSSClient instance.
	// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
	if err != nil {
		HandleError(err)
	}

	// Specify the name of the bucket in which the source image is stored. Example: examplebucket.
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must include the full path of the image. Example: exampledir/src.gif.
	sourceImageName := "example.jpg"
	// Specify the name of the processed image.
	targetImageName := "D://dest.jpg"
	// Rotate the source image by 90 degrees clockwise.
	image := "image/rotate,90"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

RESTful APIの使用

ビジネスで高レベルのカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。If your business requires a high level of customization, you can directly call RESTful APIs. 詳しくは、「GetObject」をご参照ください。

GetObject操作で自動方向パラメーターを指定して、プライベートイメージを自動方向付けできます。

GET /oss.jpg?x-oss-process=image/rotate,90 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS qn6q**************:77Dv****************