All Products
Search
Document Center

Object Storage Service:Auto-orient

Last Updated:Mar 21, 2026

Gunakan parameter auto-orient untuk mengontrol apakah OSS mengorientasikan gambar secara otomatis berdasarkan metadata orientasinya. Topik ini menjelaskan parameter tersebut dan memberikan contohnya.

Parameter

Action: auto-orient

ParameterNilai yang validDeskripsi
[value]0, 10: Pertahankan orientasi gambar sumber. 1: Orientasikan gambar secara otomatis.

Catatan penggunaan

  • Jika parameter orientasi tidak ditentukan pada gambar sumber, auto-orient tidak berpengaruh apa pun nilainya.

  • Sebagian besar penampil gambar dan browser secara otomatis mengorientasikan gambar berdasarkan data EXIF. Gambar yang Anda lihat secara lokal mungkin sudah tampak terorientasi dengan benar meskipun belum melalui pemrosesan apa pun.

  • Pengorientasian gambar secara otomatis memicu kompresi ulang, sehingga ukuran file gambar yang diproses dapat berbeda dari gambar sumber.

Memproses gambar publik

Tambahkan parameter kueri x-oss-process ke URL gambar yang memiliki izin baca-publik atau baca-tulis publik.

Contoh berikut menggunakan f.jpg dari bucket image-demo di wilayah China (Hangzhou):

https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg
f.jpg

Ubah ukuran dan pertahankan orientasi asli

Parameter:

  • Ubah ukuran menjadi lebar 100 px: resize,w_100

  • Nonaktifkan auto-orient: auto-orient,0

https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/resize,w_100/auto-orient,0
Resized image with original orientation retained

Ubah ukuran dan orientasikan secara otomatis

Parameter:

  • Ubah ukuran menjadi lebar 100 px: resize,w_100

  • Auto-orient: auto-orient,1

https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/resize,w_100/auto-orient,1
Resized image with auto-orient applied

Memproses gambar privat

Untuk gambar privat, gunakan SDK OSS atau API OSS dan sertakan penandatanganan permintaan.

OSS SDKs

Semua contoh SDK berikut menggunakan string proses image/resize,w_100/auto-orient,1 dan memuat kredensial dari variabel lingkungan. Atur OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET sebelum menjalankan.

Java

Memerlukan OSS SDK for Java 3.17.4 atau yang lebih baru.

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 {
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        String region = "cn-hangzhou";
        // Muat kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        String bucketName = "examplebucket";
        String objectName = "example.jpg";

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

        try {
            String image = "image/resize,w_100/auto-orient,1";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Simpan gambar yang diproses. Jika file dengan nama yang sama sudah ada, file tersebut akan ditimpa.
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            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("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

Memerlukan OSS SDK for PHP 2.7.0 atau yang lebih baru.

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

// Muat kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
$provider = new EnvironmentVariableCredentialsProvider();
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket = "examplebucket";
$object = "example.jpg";
$download_file = "D:\\dest.jpg";

$config = array(
    "provider" => $provider,
    "endpoint" => $endpoint,
    "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
    "region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);

$image = "image/resize,w_100/auto-orient,1";

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

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

Python

Memerlukan OSS SDK for Python 2.18.4 atau yang lebih baru.

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

# Muat kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)

key = 'example.jpg'
new_pic = 'D:\\dest.jpg'

image = 'image/resize,w_100/auto-orient,1'
bucket.get_object_to_file(key, new_pic, process=image)

Go

Memerlukan OSS SDK for Go 3.0.2 atau yang lebih baru.

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() {
	// Muat kredensial dari variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		HandleError(err)
	}

	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)
	}

	bucket, err := client.Bucket("examplebucket")
	if err != nil {
		HandleError(err)
	}

	sourceImageName := "example.jpg"
	targetImageName := "D://dest.jpg"

	image := "image/resize,w_100/auto-orient,1"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

RESTful API

Untuk memanggil API OSS secara langsung, sertakan signature V4 dalam permintaan Anda. Untuk detailnya, lihat (Direkomendasikan) Sertakan signature versi 4.

Gunakan parameter kueri x-oss-process dalam permintaan GetObject:

GET /oss.jpg?x-oss-process=image/resize,w_100/auto-orient,1 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