All Products
Search
Document Center

Object Storage Service:Putar

Last Updated:Jun 27, 2025

Anda dapat memutar gambar yang disimpan di OSS searah jarum jam dengan menambahkan parameter rotasi. Topik ini menjelaskan parameter yang digunakan untuk memutar gambar serta memberikan contoh cara melakukannya.

Parameter

Nama operasi: rotate

Tabel berikut menjelaskan parameter yang dapat dikonfigurasi.

Parameter

Deskripsi

Nilai valid

[value]

Degree seberapa jauh gambar diputar searah jarum jam.

[0,360]

Nilai default: 0. Nilai 0 menunjukkan bahwa gambar tidak diputar.

Catatan penggunaan

  • Jika gambar tidak diputar sebesar 90°, 180°, 270°, atau 360°, ukuran gambar yang diproses akan bertambah.

  • Gambar yang ingin diputar tidak boleh melebihi 4096 × 4096 piksel.

  • Jika parameter rotasi diterapkan pada gambar GIF animasi, gambar tersebut akan menjadi gambar GIF statis.

Metode operasi

Putar gambar public-read atau public-read-write searah jarum jam

Topik ini memberikan contoh cara memutar gambar dalam bucket oss-console-img-demo-cn-hangzhou di wilayah China (Hangzhou). Gambar tersebut di-hosting di URL berikut:

Putar gambar pribadi searah jarum jam

Anda dapat menggunakan OSS SDK dan OSS API untuk memutar gambar pribadi searah jarum jam.

Gunakan OSS SDK

Kode sampel berikut memberikan contoh cara memutar gambar pribadi searah jarum jam. Untuk informasi lebih lanjut tentang cara memutar gambar pribadi menggunakan OSS SDK untuk bahasa pemrograman lainnya, lihat Referensi SDK.

Java

OSS SDK for Java 3.17.4 atau versi lebih tinggi diperlukan.

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 {
        // Dalam contoh ini, endpoint dari wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou.
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek sumber. Jangan masukkan nama bucket dalam jalur lengkap.
        String objectName = "example.jpg";
        // Tentukan jalur lengkap gambar yang diproses. Contoh: D:\\dest.jpg. Jika file dengan nama yang sama sudah ada, gambar yang diproses akan menimpa file tersebut. Jika tidak, gambar yang diproses akan disimpan di jalur tersebut.
        String pathName = "D:\\dest.jpg";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Putar gambar sumber sebesar 90 derajat searah jarum jam.
            String image = "image/rotate,90";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Tetapkan nama gambar yang diproses menjadi dest.jpg dan simpan ke komputer lokal Anda.
            // Jika Anda hanya menentukan nama gambar yang diproses seperti dest.jpg tanpa menentukan jalur lokal, gambar yang diproses akan disimpan ke jalur lokal proyek tempat program sampel milik.
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            System.out.println("Tangkap OSSException, yang berarti permintaan Anda mencapai OSS, "
                    + "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Tangkap ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

OSS SDK for PHP 2.7.0 atau versi lebih tinggi diperlukan.

<?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;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek sumber. Jangan masukkan nama bucket dalam jalur lengkap.
$object = "example.jpg";
// Tentukan jalur lengkap gambar yang diproses. Contoh: D:\\dest.jpg. Jika file dengan nama yang sama sudah ada di jalur tersebut, gambar yang diproses akan menimpa file tersebut. Jika tidak, gambar yang diproses akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama gambar yang diproses seperti dest.jpg tanpa menentukan jalur lokal, gambar yang diproses akan disimpan ke jalur lokal proyek tempat program contoh ini berada.
$download_file = "D:\\dest.jpg";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
        "region" => "cn-hangzhou"
    );
$ossClient = new OssClient($config);

// Putar gambar sumber sebesar 90 derajat searah jarum jam.
$image = "image/rotate,90";

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

// Simpan gambar yang diproses ke komputer lokal Anda.
$ossClient->getObject($bucket, $object, $options);                           

Python

OSS SDK for Python 2.18.4 atau versi lebih tinggi diperlukan.

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

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Sebagai contoh, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menyertakan jalur lengkap gambar. Contoh: exampledir/src.gif.
key = 'example.jpg'
# Tentukan nama gambar yang diproses.
new_pic = 'D:\\dest.jpg'

# Putar gambar sumber sebesar 90 derajat searah jarum jam.
image = 'image/rotate,90'
bucket.get_object_to_file(key, new_pic, process=image)

Go

OSS SDK for Go 3.0.2 atau versi lebih tinggi diperlukan.

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() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Buat instance OSSClient.
	// Tentukan titik akhir dari wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur titik akhir ke 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)
	}

	// Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket.
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menyertakan jalur lengkap gambar. Contoh: exampledir/src.gif.
	sourceImageName := "example.jpg"
	// Tentukan nama gambar yang diproses.
	targetImageName := "D://dest.jpg"
	// Putar gambar sumber sebesar 90 derajat searah jarum jam.
	image := "image/rotate,90"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Gunakan RESTful API

Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil RESTful API. Untuk memanggil API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat (Direkomendasikan) Sertakan tanda tangan V4.

Anda dapat menentukan parameter auto-orient dalam operasi GetObject untuk mengatur orientasi otomatis pada gambar pribadi.

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: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e