全部产品
Search
文档中心

Object Storage Service:Pemotongan kustom

更新时间:Nov 09, 2025

Dengan Pemotongan Kustom, Anda dapat mengubah ukuran citra ke dimensi yang ditentukan.

Skenario

  • Desain dan produksi halaman web: Saat merancang antarmuka web, gambar sering kali perlu dipotong agar sesuai dengan rasio aspek atau dimensi tertentu untuk digunakan dalam avatar, latar belakang, dan galeri produk.

  • Spesifikasi gambar media sosial: Platform media sosial menetapkan persyaratan ukuran tertentu untuk berbagai jenis gambar, termasuk gambar mini, posting, dan cerita. Untuk memastikan presentasi visual yang optimal, gambar harus dipotong terlebih dahulu sesuai dengan dimensi yang direkomendasikan.

  • Pengembangan aplikasi seluler: Menyesuaikan elemen visual seperti ikon aplikasi, layar pembuka, dan grafik dalam aplikasi untuk berbagai perangkat seluler dan resolusi memerlukan pemotongan khusus.

  • Pengelolaan database gambar: Di organisasi seperti perpustakaan dan arsip yang mengelola repositori gambar besar, penting untuk menyeragamkan dimensi gambar dengan memotongnya ke ukuran yang telah ditentukan selama alur kerja pengatalogan dan arsip.

Catatan penggunaan

  • Lebar dan tinggi Citra yang diproses tidak boleh melebihi 16.384 piksel.

  • Jika koordinat awal yang ditentukan melebihi Citra sumber, BadRequest error: Posisi potongan maju berada di luar Citra akan dikembalikan.

  • Jika lebar dan tinggi yang ditentukan melebihi dimensi Citra sumber, area potongan akan dibatasi pada batas Citra sumber.

Metode

Anda dapat menggunakan URL objek, SDK OSS, atau memanggil operasi API untuk mengonfigurasi parameter pemrosesan gambar (IMG). URL objek hanya didukung untuk gambar yang dapat diakses publik (public-read atau public-read-write). Untuk gambar pribadi, gunakan SDK OSS atau panggil langsung operasi API. Untuk informasi lebih lanjut, lihat Mode Implementasi IMG.

Crop gambar public-read atau public-read-write

Jika daftar kontrol akses (ACL) dari gambar yang ingin Anda proses adalah public-read atau public-read-write, Anda dapat menambahkan parameter IMG ke URL objek untuk mengizinkan pengguna anonim mengakses objek yang diproses secara permanen.

Dalam contoh ini, ?x-oss-process=image/crop,parame_value ditambahkan ke URL gambar public-read. Anda hanya perlu mengganti parame_value dengan parameter dan nilai spesifik yang dijelaskan dalam bagian Parameter. Anda dapat menyertakan beberapa parameter dalam URL jika berlaku.

URL gambar sumber

URL yang digunakan untuk mengakses gambar yang diproses

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg

https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg?x-oss-process=image/crop,x_800,y_50

Crop gambar pribadi

Gunakan SDK OSS

Di bawah ini adalah kode contoh untuk memotong gambar pribadi menggunakan SDK OSS. Untuk cara melakukan operasi ini menggunakan bahasa pemrograman lainnya, lihat Ikhtisar.

Java

OSS SDK for Java versi 3.17.4 atau 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 {
        // Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint sebenarnya Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah endpoint. Contoh: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 gambar sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
        String objectName = "example.jpg";
        // Tentukan jalur lengkap gambar yang 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 disimpan di jalur tersebut. 
        String pathName = "D:\\dest.jpg";

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

        try {
            // Potong area 900 × 900 piksel di sudut kanan bawah gambar. 
            String image = "image/crop,w_900,h_900,g_se";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Simpan gambar yang diproses 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 contoh milik. 
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            System.out.println("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons kesalahan karena suatu alasan.");
            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 versi 2.7.0 atau 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 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 sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
$object = "src.jpg";
// Tentukan jalur lengkap gambar yang 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 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 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);

// Potong area 900 × 900 piksel di sudut kanan bawah gambar. 
$image = "image/crop,w_900,h_900,g_se";

$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 versi 2.18.4 atau 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 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)

# Jika gambar sumber disimpan di direktori root bucket, Anda dapat menentukan hanya nama gambar. Contoh: source-example.jpg. Jika gambar sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar sumber. Contoh: exampledir/source-example.jpg. 
key = 'source-example.jpg'

# Tentukan jalur lengkap gambar yang diproses. Contoh: D:\\target-example.jpg. Jika gambar dengan nama yang sama sudah ada di jalur tersebut, gambar yang diproses akan menimpa gambar tersebut. Jika tidak, gambar yang diproses disimpan di jalur tersebut. 
local_file_name = 'D:\\target-example.jpg'

# Konfigurasikan parameter crop untuk memotong area 900 × 900 piksel di sudut kanan bawah gambar. 
process = 'image/crop,w_900,h_900,g_se'

# Gunakan metode get_object dan teruskan instruksi pemrosesan menggunakan parameter process. 
result = bucket.get_object_to_file(key, local_file_name, process=process)

Go

OSS SDK for Go versi 3.0.2 atau 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 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 sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar sumber. Contoh: exampledir/example.jpg. 
	sourceImageName := "example.jpg"
	// Tentukan nama gambar yang diproses. 
	targetImageName := "D://dest.jpg"
	// Potong area 900 × 900 piksel di sudut kanan bawah gambar. 
	image := "image/crop,w_900,h_900,g_se"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Gunakan API OSS

Untuk aplikasi yang memerlukan tingkat penyesuaian programatik yang lebih tinggi, Anda dapat langsung memulai permintaan RESTful API. Untuk memanggil API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk cara menghitung header Authorization, lihat (Direkomendasikan) Sertakan Tanda Tangan V4.

Anda dapat menentukan parameter crop dalam operasi GetObject untuk memotong gambar menjadi ukuran tepat yang Anda butuhkan. Untuk informasi lebih lanjut, lihat GetObject.

GET /oss.jpg?x-oss-process=image/crop,w_900,h_900,g_se HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue

Parameter

Action: crop

Tabel di bawah ini menjelaskan parameter yang dapat dikonfigurasi untuk pemotongan citra.

Parameter

Deskripsi

Nilai valid

w

Lebar area yang ingin Anda potong.

[0, lebar citra]

Nilai default: nilai maksimum.

h

Tinggi area yang ingin Anda potong.

[0, tinggi citra]

Nilai default: nilai maksimum.

x

Koordinat X dari area yang ingin Anda potong. Nilai default adalah koordinat X dari sudut kiri atas citra.

[0, lebar citra]

y

Koordinat Y dari area yang ingin Anda potong. Nilai default adalah koordinat Y dari sudut kiri atas citra.

[0, tinggi citra]

g

Posisi area pemotongan dalam tata letak grid 3×3. Citra dibagi menjadi grid 3×3 yang terdiri dari sembilan bagian, dan area pemotongan disejajarkan dengan salah satu bagian tersebut.

  • nw: kiri atas

  • north: tengah atas

  • ne: kanan atas

  • west: tengah kiri

  • center: tengah

  • east: tengah kanan

  • sw: kiri bawah

  • south: tengah bawah

  • se: kanan bawah

Untuk cara menghitung posisi setiap bagian, lihat tabel di bawah ini.

Tabel berikut mengilustrasikan perhitungan posisi bagian dalam tata letak grid 3×3. Dalam konteks ini, srcW menunjukkan lebar citra sumber, dan srcH menunjukkan tingginya.

Ubin

Metode perhitungan

nw

0, 0

north

srcW/2 - w/2, 0

ne

srcW - w, 0

west

0, srcH/2 - h/2

center

srcW/2 - w/2, srcH/2 - h/2

east

srcW - w, srcH/2 - h/2

sw

0, srcH - h

south

srcW/2 - w/2, srcH - h

se

srcW - w, srcH - h

Contoh

Crop dari titik awal tertentu

Crop sebuah citra dari titik awal (800, 50) hingga batas:

  • Tentukan aksi: crop.

  • Tentukan titik awal (800, 500): x_800,y_500.

  • Crop hingga batas: Nilai maksimum dari w dan h digunakan secara default untuk cropping. Oleh karena itu, menentukan parameter w dan h bersifat opsional.

Untuk memotong citra baca-publik atau baca-tulis publik, tambahkan ?x-oss-process=image/crop,x_800,y_500 ke URL citra. OSS secara dinamis menerapkan operasi pemotongan saat permintaan diterima dan mengembalikan citra yang telah diproses. Untuk cara memotong citra pribadi, lihat Crop Citra Pribadi.

Demo

Contoh berikut menjelaskan cara memotong citra sumber dari titik awal (800, 50) hingga batas dengan menambahkan ?x-oss-process=image/crop,x_800,y_500 ke URL citra sumber:

Citra sumber

Citra yang diproses

image

image

URL citra sumber: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg

URL untuk mengakses citra yang diproses: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg?x-oss-process=image/crop,x_800,y_500

Crop area berdasarkan lebar dan tinggi yang ditentukan dari titik awal tertentu

Crop area seluas 300 × 300 piksel dari titik awal (800, 500):

  • Tentukan aksi: crop.

  • Tentukan titik awal (800, 500): x_800,y_500.

  • Crop area seluas 300 × 300 piksel: w_300,h_300.

Untuk memotong citra baca-publik atau baca-tulis publik, tambahkan ?x-oss-process=image/crop,x_800,y_500,w_300,h_300 ke URL citra. OSS secara dinamis menerapkan operasi pemotongan saat permintaan diterima dan mengembalikan citra yang telah diproses. Untuk cara memotong citra pribadi, lihat Crop Citra Pribadi.

Contoh efek

Tabel berikut menunjukkan efek ekstraksi area 300 × 300 piksel dari titik awal yang ditentukan (800, 500) dengan menambahkan ?x-oss-process=image/crop,x_800,y_500,w_300,h_300 ke URL citra sumber:

Citra sumber

Citra yang diproses

image

image

URL citra sumber: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg

URL untuk mengakses citra yang diproses: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg?x-oss-process=image/crop,x_800,y_500,w_300,h_300

Crop area berdasarkan lebar dan tinggi yang ditentukan di pojok kanan bawah citra

Crop area seluas 900 × 900 piksel di pojok kanan bawah citra

  • Tentukan aksi: crop.

  • Tentukan titik awal di pojok kanan bawah: g_se.

  • Crop area seluas 900 × 900 piksel: w_900,h_900.

Untuk memotong citra baca-publik atau baca-tulis publik, tambahkan ?x-oss-process=image/crop,g_se,w_900,h_900 ke URL citra. OSS secara dinamis menerapkan operasi pemotongan saat permintaan diterima dan mengembalikan citra yang telah diproses. Untuk cara memotong citra pribadi, lihat Crop Citra Pribadi.

Contoh efek

Tabel berikut menunjukkan efek pemotongan area 900 × 900 piksel dari pojok kanan bawah citra dengan menambahkan ?x-oss-process=image/crop,g_se,w_900,h_900 ke URL citra sumber:

Citra sumber

Citra yang diproses

image

image

URL citra sumber: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg

URL untuk mengakses citra yang diproses: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg?x-oss-process=image/crop,g_se,w_900,h_900

Crop area berdasarkan lebar dan tinggi yang ditentukan di pojok kanan bawah citra dan regangkan area yang dipotong

Crop area seluas 900 × 900 piksel di pojok kanan bawah citra dan regangkan area yang dipotong ke bawah sebesar (100,200):

  • Tentukan aksi: crop.

  • Tentukan titik awal di pojok kanan bawah citra dan regangkan area yang dipotong ke bawah sebesar (100,200): g_se,x_100,y_200

  • Crop area seluas 900 × 900 piksel: w_900,h_900.

Untuk memotong citra baca-publik atau baca-tulis publik, tambahkan ?x-oss-process=image/crop,g_se,x_100,y_200,w_900,h_900 ke URL citra. OSS secara dinamis menerapkan operasi pemotongan saat permintaan diterima dan mengembalikan citra yang telah diproses. Untuk cara memotong citra pribadi, lihat Crop Citra Pribadi.

Contoh efek

Tabel berikut menunjukkan efek pemotongan area 900 × 900 piksel di pojok kanan bawah citra dengan menambahkan ?x-oss-process=image/crop,g_se,x_100,y_200,w_900,h_900 ke URL citra sumber:

Citra sumber

Citra yang diproses

image

image

URL citra sumber: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg

URL untuk mengakses citra yang diproses: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example1.jpg?x-oss-process=image/crop,g_se,x_100,y_200,w_900,h_900

Crop citra menggunakan pemotongan cerdas

Konfigurasikan parameter berikut untuk memotong citra menggunakan pemotongan cerdas:

  • Tentukan aksi: crop.

  • Tentukan algoritma: g_auto.

Sebelum memproses citra dengan SDK OSS, pastikan bucket target terhubung dengan proyek Intelligent Media Management (IMM).

Contoh kode

Java

OSS SDK for Java versi 3.17.4 atau 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 {
        // Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah endpoint. Contoh: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
        String objectName = "example.jpg";
        // Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
        String pathName = "D:\\dest.jpg";

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

        try {
            // Lakukan pemotongan cerdas. 
            String image = "image/crop,g_auto";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Simpan citra yang diproses ke komputer lokal Anda. 
            // Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra 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 suatu alasan.");
            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 versi 2.7.0 atau 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 contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
$object = "src.jpg";
// Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
// Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra yang 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);

// Lakukan pemotongan cerdas. 
$image = "image/crop,g_auto";

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

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

Python

OSS SDK for Python versi 2.18.4 atau lebih baru 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 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)

# Jika citra sumber disimpan di direktori root bucket, Anda dapat menentukan hanya nama citra. Contoh: source-example.jpg. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/source-example.jpg. 
key = 'source-example.jpg'

# Tentukan jalur lengkap citra yang diproses. Contoh: D:\\target-example.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
local_file_name = 'D:\\target-example.jpg'

# Lakukan pemotongan cerdas. 
process = 'image/crop,g_auto'

# Gunakan metode get_object dan lewatkan instruksi pemrosesan menggunakan parameter process. 
result = bucket.get_object_to_file(key, local_file_name, process=process)

Go

OSS SDK for Go versi 3.0.2 atau 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 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 endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual 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 citra sumber disimpan. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama citra sumber. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/example.jpg. 
	sourceImageName := "example.jpg"
	// Tentukan nama citra yang diproses. 
	targetImageName := "D://dest.jpg"
	// Lakukan pemotongan cerdas. 
	image := "image/crop,g_auto"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Contoh efek

Tabel berikut menunjukkan efek penerapan parameter image/crop,g_auto dan algoritma cerdas untuk memotong citra:

Citra sumber

Citra yang diproses

原图

image

Lakukan pemotongan dimensi tetap berpusat pada wajah terbesar yang terdeteksi di citra

Crop area seluas 200 × 200 piksel berpusat pada wajah terbesar yang terdeteksi di citra:

  • Tentukan aksi: crop.

  • Crop area berpusat pada wajah terbesar yang terdeteksi di citra: g_face.

  • Crop area seluas 200 × 200 piksel: w_200,h_200.

Sebelum memproses citra dengan SDK OSS, pastikan bucket target terhubung dengan proyek IMM.

Contoh kode

Java

OSS SDK for Java versi 3.17.4 atau 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 {
        // Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah endpoint. Contoh: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
        String objectName = "example.jpg";
        // Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
        String pathName = "D:\\dest.jpg";

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

        try {
            // Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
            String image = "image/crop,g_face,w_200,h_200";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Simpan citra yang diproses ke komputer lokal Anda. 
            // Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra 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 suatu alasan.");
            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 versi 2.7.0 atau 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 contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
$object = "src.jpg";
// Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
// Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra yang 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);

// Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
$image = "image/crop,g_face,w_200,h_200";

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

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

Python

OSS SDK for Python versi 2.18.4 atau lebih baru 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 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)

# Jika citra sumber disimpan di direktori root bucket, Anda dapat menentukan hanya nama citra. Contoh: source-example.jpg. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/source-example.jpg. 
key = 'source-example.jpg'

# Tentukan jalur lengkap citra yang diproses. Contoh: D:\\target-example.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
local_file_name = 'D:\\target-example.jpg'

# Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra.
process = 'image/crop,g_face,w_200,h_200'

# Gunakan metode get_object dan lewatkan instruksi pemrosesan menggunakan parameter process. 
result = bucket.get_object_to_file(key, local_file_name, process=process)

Go

OSS SDK for Go versi 3.0.2 atau 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 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 endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual 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 citra sumber disimpan. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama citra sumber. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/example.jpg. 
	sourceImageName := "example.jpg"
	// Tentukan nama citra yang diproses. 
	targetImageName := "D://dest.jpg"
	// Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
	image := "image/crop,g_face,w_200,h_200"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Contoh efek

Contoh berikut menunjukkan efek pemotongan area seluas 200 × 200 piksel berpusat pada wajah terbesar yang terdeteksi di citra dengan menggunakan image/crop,g_face,w_200,h_200:

Citra sumber

Citra yang diproses

原图

image

Crop area berpusat pada wajah terbesar yang terdeteksi di citra dan perbesar dua kali lipat

Tentukan area pemotongan di sekitar wajah terbesar yang terdeteksi di citra, lalu perbesar area ini dua kali lipat sebelum pemotongan akhir:

  • Tentukan aksi: crop.

  • Crop area berpusat pada wajah terbesar yang terdeteksi di citra: g_face.

  • Perbesar area yang dipotong menjadi dua kali ukuran wajah terbesar yang terdeteksi: p_200.

Sebelum memproses citra dengan SDK OSS, pastikan bucket target terhubung dengan proyek IMM.

Contoh kode

Java

OSS SDK for Java versi 3.17.4 atau 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 {
        // Tentukan endpoint wilayah. Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah endpoint. Contoh: cn-hangzhou. 
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
        String objectName = "example.jpg";
        // Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
        String pathName = "D:\\dest.jpg";

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

        try {
            // Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
            String image = "image/crop,g_face,w_200,h_200";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Simpan citra yang diproses ke komputer lokal Anda. 
            // Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra 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 suatu alasan.");
            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 versi 2.7.0 atau 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 contoh, 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 citra sumber. Jangan sertakan nama bucket dalam jalur lengkap. 
$object = "src.jpg";
// Tentukan jalur lengkap citra yang diproses. Contoh: D:\\dest.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
// Jika Anda hanya menentukan nama citra yang diproses seperti dest.jpg tanpa menentukan jalur lokal, citra yang 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);

// Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
$image = "image/crop,g_face,w_200,h_200";

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

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

Python

OSS SDK for Python versi 2.18.4 atau lebih baru 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 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)

# Jika citra sumber disimpan di direktori root bucket, Anda dapat menentukan hanya nama citra. Contoh: source-example.jpg. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/source-example.jpg. 
key = 'source-example.jpg'

# Tentukan jalur lengkap citra yang diproses. Contoh: D:\\target-example.jpg. Jika citra dengan nama yang sama sudah ada di jalur tersebut, citra yang diproses akan menimpanya. Jika tidak, citra yang diproses akan disimpan di jalur tersebut. 
local_file_name = 'D:\\target-example.jpg'

# Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra.
process = 'image/crop,g_face,w_200,h_200'

# Gunakan metode get_object dan lewatkan instruksi pemrosesan menggunakan parameter process. 
result = bucket.get_object_to_file(key, local_file_name, process=process)

Go

OSS SDK for Go versi 3.0.2 atau 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 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 endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual 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 citra sumber disimpan. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama citra sumber. Jika citra sumber tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap citra sumber. Contoh: exampledir/example.jpg. 
	sourceImageName := "example.jpg"
	// Tentukan nama citra yang diproses. 
	targetImageName := "D://dest.jpg"
	// Crop area seluas 200 × 200 piksel dari pusat wajah maksimum di citra. 
	image := "image/crop,g_face,w_200,h_200"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Contoh efek

Contoh berikut menunjukkan efek pemotongan area berpusat pada wajah terbesar yang terdeteksi di citra dan memperbesarnya dua kali lipat dengan menggunakan parameter image/crop,g_face,p_200:

Citra sumber

Citra yang diproses

原图

image