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
| Parameter | Nilai yang valid | Deskripsi |
|---|---|---|
[value] | 0, 1 | 0: Pertahankan orientasi gambar sumber. 1: Orientasikan gambar secara otomatis. |
Catatan penggunaan
Jika parameter orientasi tidak ditentukan pada gambar sumber,
auto-orienttidak 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
Ubah ukuran dan pertahankan orientasi asli
Parameter:
Ubah ukuran menjadi lebar 100 px:
resize,w_100Nonaktifkan 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
Ubah ukuran dan orientasikan secara otomatis
Parameter:
Ubah ukuran menjadi lebar 100 px:
resize,w_100Auto-orient:
auto-orient,1
https://image-demo.oss-cn-hangzhou.aliyuncs.com/f.jpg?x-oss-process=image/resize,w_100/auto-orient,1
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