Anda dapat menggunakan parameter auto-orient untuk menentukan apakah gambar yang disimpan di Object Storage Service (OSS) diorientasikan berdasarkan konfigurasi auto-orient. Topik ini menjelaskan penggunaan parameter auto-orient serta memberikan contoh cara mengorientasikan gambar secara otomatis.
Parameter
Tindakan: auto-orient
Tabel berikut menjelaskan nilai-nilai valid dari parameter auto-orient.
Format | Deskripsi | Nilai valid |
[nilai] | Menentukan apakah akan mengorientasikan gambar secara otomatis. | 0 dan 1.
|
Catatan penggunaan
Jika parameter orientasi tidak ditentukan untuk gambar sumber, parameter auto-orient tidak akan berlaku.
Sebagian besar alat dapat digunakan untuk mengorientasikan gambar yang memiliki parameter orientasi tertentu. Oleh karena itu, gambar yang Anda lihat mungkin sudah diorientasikan secara otomatis.
Gambar yang diproses dengan menggunakan auto-orient dikompres ulang, yang menghasilkan perbedaan ukuran antara gambar yang diproses dan gambar sumber.
Metode
Mengorientasikan gambar public-read atau public-read-write secara otomatis
Anda dapat menentukan parameter auto-orient dalam URL gambar public-read atau public-read-write untuk mengorientasikan gambar secara otomatis.
Dalam contoh berikut, sebuah gambar bernama f.jpg di bucket image-demo di wilayah China (Hangzhou) digunakan sebagai gambar sumber. Gambar tersebut di-hosting di URL berikut:
https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg

Mengubah ukuran gambar dan mempertahankan orientasi gambar
Konfigurasikan parameter berikut:
Mengubah ukuran gambar menjadi lebar 100 piksel: resize,w_100
Nonaktifkan auto-orient: auto-orient,0
URL yang digunakan untuk memproses gambar: https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/resize,w_100/auto-orient,0.

Mengubah ukuran dan mengorientasikan gambar secara otomatis
Konfigurasikan parameter berikut:
Mengubah ukuran gambar menjadi lebar 100 piksel: resize,w_100
Mengorientasikan gambar secara otomatis: auto-orient,1
URL yang digunakan untuk memproses gambar: https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/resize,w_100/auto-orient,1.

Mengorientasikan gambar privat secara otomatis
Anda dapat menggunakan OSS SDK dan OSS API untuk mengorientasikan gambar privat secara otomatis.
Gunakan OSS SDK
Kode sampel berikut memberikan contoh tentang cara mengorientasikan gambar privat secara otomatis dengan menggunakan OSS SDK untuk bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara mengorientasikan gambar privat secara otomatis dengan menggunakan OSS SDK untuk bahasa pemrograman lainnya, lihat Ikhtisar.
Java
OSS SDK for Java 3.17.4 atau versi lebih baru 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 wilayah China (Hangzhou) digunakan. Tentukan endpoint sebenarnya Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah bucket tempat gambar pribadi disimpan. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan bahwa 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 gambar yang ingin Anda proses. Jangan sertakan nama bucket dalam jalur lengkap.
String objectName = "example.jpg";
// Tentukan jalur lengkap gambar yang telah diproses. Contoh: D:\\dest.jpg. Jika gambar dengan nama yang sama sudah ada di jalur tersebut, gambar yang diproses akan menimpa gambar 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 {
// Ubah ukuran dan orientasikan gambar secara otomatis.
String image = "image/resize,w_100/auto-orient,1";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(image);
// Tetapkan nama gambar yang telah diproses menjadi dest.jpg dan simpan ke komputer lokal Anda.
// Jika Anda hanya menentukan nama gambar yang telah 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 berhasil 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 baru 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 sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap gambar yang ingin Anda proses. Jangan sertakan nama bucket dalam jalur lengkap.
$object = "example.jpg";
// Tentukan jalur lengkap gambar yang telah diproses. Contoh: D:\\dest.jpg. Jika gambar dengan nama yang sama sudah ada di jalur tersebut, gambar yang telah diproses akan menimpa gambar tersebut. Jika tidak, gambar yang telah diproses akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama gambar yang telah diproses seperti dest.jpg tanpa menentukan jalur lokal, gambar yang telah diproses akan disimpan ke jalur lokal proyek tempat program sampel milik.
$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);
// Ubah ukuran dan orientasikan gambar secara otomatis.
$image = "image/resize,w_100/auto-orient,1";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $image);
// Simpan gambar yang telah diproses ke komputer lokal Anda.
$ossClient->getObject($bucket, $object, $options); Python
OSS SDK for Python 2.18.4 atau versi lebih baru diperlukan.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint 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 telah diproses.
new_pic = 'D:\\dest.jpg'
# Ubah ukuran dan orientasikan gambar secara otomatis.
image = 'image/resize,w_100/auto-orient,1'
bucket.get_object_to_file(key, new_pic, process=image)Go
OSS SDK for Go 3.0.2 atau versi lebih baru 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 sampel, 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 endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya Anda.
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 telah diproses.
targetImageName := "D://dest.jpg"
// Ubah ukuran dan orientasikan gambar secara otomatis.
image := "image/resize,w_100/auto-orient,1"
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
if err != nil {
HandleError(err)
}
}Gunakan API RESTful
Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil API RESTful. 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 mengorientasikan gambar privat secara otomatis.
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