全部产品
Search
文档中心

Object Storage Service:Mode implementasi IMG

更新时间:Jul 06, 2025

Topik ini menjelaskan cara memproses objek gambar yang disimpan di Object Storage Service (OSS) menggunakan URL objek, SDK OSS, atau operasi API.

Gunakan URL objek untuk memproses gambar

Untuk memproses objek gambar menggunakan URL-nya, Anda dapat menambahkan parameter Pemrosesan Gambar (IMG) atau parameter gaya gambar ke akhir URL.
  • Jika daftar kontrol akses (ACL) dari objek gambar bersifat publik baca atau publik baca/tulis, Anda dapat menambahkan parameter IMG atau parameter gaya gambar ke URL objek untuk memproses gambar tersebut.
  • Jika ACL dari objek gambar bersifat pribadi, Anda dapat menggunakan SDK OSS untuk menambahkan operasi IMG ke URL objek guna memproses gambar tersebut.
Penting Secara default, ketika Anda mengakses objek gambar dalam bucket melalui URL, gambar akan diunduh. Untuk memastikan bahwa objek gambar dipratinjau saat diakses, Anda harus memetakan nama domain kustom ke bucket Anda dan menambahkan catatan CNAME. Untuk informasi lebih lanjut, lihat Petakan Nama Domain Kustom.

Objek Gambar dengan ACL Publik Baca atau Publik Baca/Tulis

Tabel berikut menjelaskan parameter yang dapat ditambahkan ke URL objek gambar.

Mode pemrosesan gambarKonfigurasikan parameter IMGTambahkan parameter gaya gambar
URL IMGhttps://bucketname.endpoint/objectname?x-oss-process=image/action,param_valuehttps://bucketname.endpoint/objectname?x-oss-process=style/stylename
Parameter
  • https://bucketname.endpoint/objectname: URL objek gambar. Untuk informasi lebih lanjut tentang cara mendapatkan URL objek, lihat Bagaimana cara saya mendapatkan URL objek yang telah diunggah?
  • x-oss-process=image/: parameter tetap, yang menunjukkan bahwa objek gambar diproses dengan menambahkan parameter IMG.
  • action, param_value: tindakan, parameter, dan nilai operasi IMG. Parameter ini menentukan operasi IMG yang digunakan untuk memproses objek gambar. Pisahkan beberapa operasi dengan garis miring (/). OSS memproses gambar dalam urutan parameter IMG. Sebagai contoh, image/resize,w_200/rotate,90 menunjukkan bahwa OSS mengubah ukuran gambar menjadi lebar 200 piksel, lalu memutar gambar sebesar 90 derajat. Untuk informasi lebih lanjut tentang parameter IMG yang didukung, lihat Parameter IMG.
  • https://bucketname.endpoint/objectname: URL objek gambar. Untuk informasi lebih lanjut tentang cara mendapatkan URL objek, lihat Bagaimana cara saya mendapatkan URL objek yang telah diunggah?
  • x-oss-process=style/: parameter tetap, yang menunjukkan bahwa objek gambar diproses dengan menambahkan parameter gaya gambar.
  • stylename: nama gaya yang Anda atur di konsol OSS. Untuk informasi lebih lanjut tentang cara menentukan gaya gambar, lihat Buat gaya gambar.

Jika pemisah kustom ditentukan, Anda dapat menggunakan pemisah tersebut untuk menggantikan ? x-oss-process=style/. Ini menyederhanakan URL IMG. Sebagai contoh, jika Anda mengatur pemisah ke tanda seru (!), URL objek gambar yang diproses adalah <https://bucketname.endpoint/objectname!stylename. Untuk informasi lebih lanjut tentang cara mengonfigurasi pemisah kustom, lihat bagian "Konfigurasikan perlindungan gambar sumber" dalam Konfigurasikan gaya gambar.

Contohhttps://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_300/quality,q_90https://image-demo.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/panda_style

Objek Gambar dengan ACL Pribadi

Kode berikut memberikan contoh cara menghasilkan URL yang ditandatangani dengan parameter IMG menggunakan SDK OSS untuk beberapa bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara menghasilkan URL yang ditandatangani dengan parameter IMG menggunakan SDK OSS untuk bahasa pemrograman lainnya, lihat Ikhtisar.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import java.net.URL;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // Dalam contoh ini, endpoint wilayah Tiongkok (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 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. Jangan sertakan nama bucket dalam jalur lengkap.
        String objectName = "exampleobject.jpg";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // 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 gambar menjadi tinggi dan lebar 100 piksel, dan putar gambar sebesar 90 derajat.
            String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
            // Atur periode validitas URL yang ditandatangani menjadi 10 menit. (Periode validitas maksimum adalah 32400 detik.)
            Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
            GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
            req.setExpiration(expiration);
            req.setProcess(style);
            URL signedUrl = ossClient.generatePresignedUrl(req);
            System.out.println(signedUrl);
        } 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
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.jpg. Jangan sertakan nama bucket dalam jalur lengkap.
$object = "exampledir/exampleobject.jpg";

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

// Hasilkan URL yang ditandatangani yang mencakup parameter IMG. Periode validitas URL adalah 3600 detik. URL yang ditandatangani dapat langsung digunakan untuk mengakses gambar menggunakan browser.
$timeout = 3600;

$options = array(
    // Ubah ukuran gambar menjadi 100 x 100 piksel.
    OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );

$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("rtmp url: \n" . $signedUrl);           
const OSS = require("ali-oss");

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke oss-cn-hangzhou.
  region: "oss-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.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: "examplebucket",
});
// Atur periode validitas URL menjadi 10 menit dan gaya gambar menjadi image/resize,w_300.
const signUrl = client.signatureUrl("example.png", {
  expires: 600,
  process: "image/resize,w_300",
});
console.log("signUrl=" + signUrl);
# -*- 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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket. Contoh: examplebucket.
bucket_name = 'examplebucket'
# Tentukan nama bucket tempat gambar disimpan. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
key = 'exampledir/example.jpg'

# Jika gambar tidak disimpan di bucket yang ditentukan, Anda harus mengunggah gambar ke bucket tersebut.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# Ubah ukuran gambar menjadi 100 × 100 piksel dan putar gambar sebesar 90 derajat.
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# Hasilkan URL objek yang ditandatangani yang mencakup parameter IMG. Atur periode validitas URL menjadi 600. Unit: detik.
url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
print(url)
using Aliyun.OSS;
using Aliyun.OSS.Common;

// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"); 
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
var objectName = "exampledir/exampledir.jpg";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instance ClientConfiguration dan ubah parameter default berdasarkan kebutuhan Anda.
var conf = new ClientConfiguration();

// Gunakan algoritma tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instance OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Ubah ukuran gambar menjadi 100 × 100 piksel.
    var process = "image/resize,m_fixed,w_100,h_100";
    var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
    {
        Expiration = DateTime.Now.AddHours(1),
        Process = process
    };
    // Hasilkan URL yang ditandatangani.
    var uri = client.GeneratePresignedUri(req);
    Console.WriteLine("Generate Presigned Uri:{0} with process:{1} succeeded ", uri, process);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda.
    // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. Tentukan wilayah aktual.
    clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    clientOptions = append(clientOptions, oss.Region("yourRegion"))
    // Tentukan versi algoritma tanda tangan.
    clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    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. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.
    ossImageName := "exampledir/example.jpg"
    // Hasilkan URL yang ditandatangani yang mencakup parameter IMG. Atur periode validitas URL yang ditandatangani menjadi 600 detik. (Periode validitas maksimum adalah 32400 detik.)
    signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
    if err != nil {
    HandleError(err)
    } else {
    fmt.Println(signedURL)
    }
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS.*/
            
    /* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
    std::string Endpoint = "yourEndpoint";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.*/
    std::string Region = "yourRegion";
    /* Tentukan nama bucket tempat gambar berada. Contoh: examplebucket.*/
    std::string BucketName = "examplebucket";
    /* Tentukan nama gambar. Jika gambar tidak disimpan di direktori root bucket, awali nama gambar dengan jalur ke gambar. Contoh: exampledir/example.jpg.*/
    std::string ObjectName = "exampledir/example.jpg";

    /* Inisialisasi sumber daya seperti sumber daya jaringan.*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);


    /* Hasilkan URL yang ditandatangani yang mencakup parameter IMG untuk objek.*/
    std::string Process = "image/resize,m_fixed,w_100,h_100";
    GeneratePresignedUrlRequest request(BucketName, ObjectName, Http::Get);
    request.setProcess(Process);
    /* Maksimum periode validitas URL adalah 32400 detik.*/
    auto outcome = client.GeneratePresignedUrl(request);
	
    if (outcome.isSuccess()) {
    std::cout << "Generated presigned URL: " << outcome.result() << std::endl;
    } else {
    std::cout << "Failed to generate presigned URL. Error code: " << outcome.error().Code()
              << ", Message: " << outcome.error().Message()
              << ", RequestId: " << outcome.error().RequestId() << std::endl;
    }
    
    /* Lepaskan sumber daya seperti sumber daya jaringan.*/
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket.*/
const char *bucket_name = "examplebucket";
/* Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt.*/
const char *object_name = "exampledir/exampleobject.txt";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi data bertipe aos_string_t.*/
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.*/
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Tentukan dua parameter tambahan.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah menggunakan CNAME. Nilai 0 menunjukkan bahwa CNAME tidak digunakan.*/
    options->config->is_cname = 0;
    /* Konfigurasikan parameter jaringan, seperti periode timeout.*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di main() untuk menginisialisasi sumber daya global, seperti sumber daya jaringan dan memori.*/
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Buat kolam memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat kolam memori termasuk dalam pustaka APR.*/
    aos_pool_t *pool;
    /* Buat kolam memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa kolam tidak mewarisi kolam memori lain.*/
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl.*/
    oss_request_options_t *oss_client_options;
    /* Alokasikan sumber daya memori di kolam memori ke opsi.*/
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi oss_client_options.*/
    init_options(oss_client_options);
    /* Inisialisasi parameter.*/
    aos_string_t bucket;
    aos_string_t object;
    aos_table_t *params = NULL;
    aos_http_request_t *req;
    char *url_str;
    apr_time_t now;
    int64_t expire_time; 
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    /* Ubah ukuran gambar menjadi 100 × 100 piksel.*/
    params = aos_table_make(pool, 1);
    apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
    req = aos_http_request_create(pool);
    req->method = HTTP_GET;
    req->query_params = params;
    /* Tentukan periode validitas (expire_time) dalam detik.*/
    now = apr_time_now();
    expire_time = now / 1000000 + 10 * 60;
    /* Hasilkan URL yang ditandatangani.*/
    url_str = oss_gen_signed_url(oss_client_options, &bucket, &object, expire_time, req);
    printf("url: %s\n", url_str);
    /* Lepaskan kolam memori. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan.*/
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang dialokasikan.*/
    aos_http_io_deinitialize();
    return 0;
}

Gunakan SDK OSS untuk memproses gambar

Anda dapat mengonfigurasi parameter IMG atau parameter gaya gambar di SDK OSS untuk memproses gambar.

Konfigurasikan Parameter IMG

Saat menggunakan parameter IMG untuk memproses gambar, pisahkan beberapa parameter IMG dengan garis miring (/). Kode berikut memberikan contoh cara mengonfigurasi parameter IMG menggunakan SDK OSS untuk beberapa bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter IMG menggunakan SDK OSS untuk bahasa pemrograman lainnya, lihat Ikhtisar.

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 Tiongkok (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 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. Jangan sertakan nama bucket dalam jalur lengkap.
        String objectName = "exampleobject.jpg";
        // Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.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.
        String pathName = "D:\\localpath\\example-new.jpg";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // 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 gambar menjadi tinggi dan lebar 100 piksel, dan putar gambar sebesar 90 derajat.
            String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(style);
            // Beri nama gambar yang diproses sebagai example-new.jpg dan simpan gambar tersebut di komputer lokal Anda.
            // Jika Anda hanya menentukan nama file lokal seperti example-new.jpg tanpa menentukan jalur lokal file tersebut, gambar yang diproses akan disimpan ke jalur lokal proyek tempat program sampel ini berada.
            ossClient.getObject(request, new File("D:\\localpath\\example-new.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
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.jpg. Jangan sertakan nama bucket dalam jalur lengkap.
$object = "exampledir/exampleobject.jpg";
// Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.jpg. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama file seperti example-new.jpg tetapi tidak menentukan jalur lokal, file tersebut akan disimpan ke jalur proyek tempat program sampel ini berada.
$download_file = "D:\\localpath\\example-new.jpg";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
// Jika gambar yang ingin Anda proses tidak ada di bucket yang ditentukan, Anda harus mengunggah gambar tersebut ke bucket yang ditentukan.
// $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");

// Ubah ukuran gambar menjadi 100 × 100 piksel dan putar gambar sebesar 90 derajat.
$style = "image/resize,m_fixed,w_100,h_100/rotate,90";

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

// Simpan gambar yang diproses sebagai example-new.jpg di komputer lokal Anda.
$ossClient->getObject($bucket, $object, $options);

// Setelah gambar diproses, Anda dapat menghapus gambar sumber dari bucket jika Anda tidak lagi membutuhkan gambar tersebut.
// $ossClient->deleteObject($bucket, $object);                              
# -*- coding: utf-8 -*-
import os
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket.
bucket_name = 'examplebucket'
# Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur gambar. Contoh: example/example.jpg.
key = 'exampledir/example.jpg'
# Tentukan nama gambar yang diproses.
new_pic = 'exampledir/newexample.jpg'

# Jika gambar yang ingin Anda proses tidak ada di bucket yang ditentukan, Anda harus mengunggah gambar yang disimpan di jalur lokal bucket.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')

# Ubah ukuran gambar menjadi 100 × 100 piksel, putar gambar sebesar 90 derajat, lalu simpan gambar yang diproses ke komputer lokal Anda.
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
bucket.get_object_to_file(key, new_pic, process=style)
# Setelah gambar diproses, Anda dapat menghapus gambar sumber dari bucket jika Anda tidak lagi membutuhkan gambar tersebut.
# bucket.delete_object(key)
# Jika Anda tidak lagi membutuhkan gambar yang diproses, Anda dapat menghapus gambar tersebut.
# os.remove(new_pic)
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda.
    // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. Tentukan wilayah aktual.
    clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    clientOptions = append(clientOptions, oss.Region("yourRegion"))
    // Tentukan versi algoritma tanda tangan.
    clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    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 gambar. Contoh: example/example.jpg.
    sourceImageName := "exampledir/example.jpg"
    // Tentukan nama gambar yang diproses.
    targetImageName := "exampledir/newexample.jpg"
    // Ubah ukuran gambar menjadi 100 × 100 piksel, putar gambar sebesar 90 derajat, lalu simpan gambar tersebut ke komputer lokal Anda.
    style := "image/resize,m_fixed,w_100,h_100/rotate,90"
    err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
    if err != nil {
     HandleError(err)
    }
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS.*/
            
    /* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
    std::string Endpoint = "yourEndpoint";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.*/
    std::string Region = "yourRegion";
    /* Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket.*/
    std::string BucketName = "examplebucket";
    /* Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg.*/
    std::string ObjectName = "exampledir/example.jpg";

     /* Inisialisasi sumber daya seperti sumber daya jaringan.*/
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.*/
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Ubah ukuran gambar menjadi tinggi dan lebar 100 piksel, putar gambar sebesar 90 derajat, lalu simpan gambar tersebut ke komputer lokal Anda.*/
    std::string Process = "image/resize,m_fixed,w_100,h_100/rotate,90";
    GetObjectRequest request(BucketName, ObjectName);
    request.setProcess(Process);
    auto outcome = client.GetObject(request);
    if (outcome.isSuccess()) {
    std::cout << "Gambar berhasil diproses." << std::endl;
    } else {
    std::cout << "Gagal memproses gambar. Kode kesalahan: " << outcome.error().Code()
              << ", Pesan: " << outcome.error().Message()
              << ", RequestId: " << outcome.error().RequestId() << std::endl;
    }

    /* Lepaskan sumber daya seperti sumber daya jaringan.*/
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.*/
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket.*/
const char *bucket_name = "examplebucket";
/* Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt.*/
const char *object_name = "exampledir/exampleobject.txt";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.*/
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi data bertipe aos_string_t.*/
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.*/
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Tentukan dua parameter tambahan.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah menggunakan CNAME. Nilai 0 menunjukkan bahwa CNAME tidak digunakan.*/
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan, seperti periode timeout.*/
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di main() untuk menginisialisasi sumber daya global, seperti sumber daya jaringan dan memori.*/
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Buat kolam memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat kolam memori termasuk dalam pustaka APR.*/
    aos_pool_t *pool;
    /* Buat kolam memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa kolam tidak mewarisi kolam memori lain.*/
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl.*/
    oss_request_options_t *oss_client_options;
    /* Alokasikan sumber daya memori di kolam memori ke opsi.*/
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi oss_client_options.*/
    init_options(oss_client_options);
    /* Inisialisasi parameter.*/
    aos_string_t bucket;
    aos_string_t object;
    aos_string_t file;
    aos_table_t *headers = NULL;
    aos_table_t *params = NULL;
    aos_table_t *resp_headers = NULL;
    aos_status_t *resp_status = NULL;
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    /* Ubah ukuran gambar menjadi 100 × 100 piksel dan putar gambar sebesar 90 derajat.*/
    params = aos_table_make(pool, 1);
    apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100/rotate,90");
    /* Simpan gambar yang diproses ke komputer lokal Anda.*/
    aos_str_set(&file, "yourLocalFileName");
    resp_status = oss_get_object_to_file(oss_client_options, &bucket, &object, headers, params, &file, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("get object to file succeeded\n");
    } else {
        printf("get object to file failed\n");  
    }
    /* Lepaskan kolam memori. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan.*/
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang dialokasikan.*/
    aos_http_io_deinitialize();
    return 0;
}

Tambahkan Gaya Gambar

Anda dapat menentukan gaya gambar untuk mengenkapsulasi berbagai parameter IMG dalam gaya tertentu, lalu gunakan gaya tersebut untuk memproses beberapa gambar secara bersamaan. Kode berikut memberikan contoh cara menggunakan gaya gambar untuk memproses gambar menggunakan SDK OSS untuk beberapa bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara menggunakan gaya gambar untuk memproses gambar menggunakan SDK OSS untuk bahasa pemrograman lainnya, lihat Ikhtisar.

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 Tiongkok (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 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. Jangan sertakan nama bucket dalam jalur lengkap.
        String objectName = "exampleobject.jpg";
        // Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.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.
        String pathName = "D:\\localpath\\example-new.jpg";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // 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 {
            // Gunakan gaya gambar kustom untuk memproses gambar.
            // Dalam contoh ini, ganti yourCustomStyleName dengan nama gaya gambar yang Anda buat di konsol OSS.
            String style = "style/yourCustomStyleName";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(style);
            // Beri nama gambar yang diproses sebagai example-new.jpg dan simpan gambar tersebut di komputer lokal Anda.
            // Jika Anda hanya menentukan nama file lokal seperti example-new.jpg tanpa menentukan jalur lokal file tersebut, gambar yang diproses akan disimpan ke jalur lokal proyek tempat program sampel ini berada.
            ossClient.getObject(request, new File(pathName));
        } 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
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.jpg. Jangan sertakan nama bucket dalam jalur lengkap.
$object = "exampledir/exampleobject.jpg";
// Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.jpg. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama file seperti example-new.jpg tetapi tidak menentukan jalur lokal, file tersebut akan disimpan ke jalur proyek tempat program sampel ini berada.
$download_file = "D:\\localpath\\example-new.jpg";

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

// Jika gambar yang ingin Anda proses tidak ada di bucket yang ditentukan, Anda harus mengunggah gambar tersebut ke bucket yang ditentukan.
// $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");

// Gunakan gaya gambar kustom untuk memproses gambar.
// Atur yourCustomStyleName ke nama gaya gambar yang Anda buat di konsol OSS.
$style = "style/yourCustomStyleName";

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

// Simpan gambar yang diproses sebagai example-new.jpg di komputer lokal Anda.
$ossClient->getObject($bucket, $object, $options);

// Setelah gambar diproses, Anda dapat menghapus gambar sumber dari bucket jika Anda tidak lagi membutuhkan gambar tersebut.
// $ossClient->deleteObject($bucket, $object);                              
const OSS = require('ali-oss');

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'yourbucketname'
});

// Ubah ukuran gambar menjadi 100 × 100 piksel.
async function scale() {
  try {
    const result = await client.get('example.jpg', './example-resize.jpg', { process: 'image/resize,m_fixed,w_100,h_100'});
  } catch (e) {
    console.log(e);
  }
}

scale()

// Potong gambar menjadi 100 x 100 piksel mulai dari posisi yang ditentukan oleh pasangan koordinat (100, 100).
async function cut() {
  try {
     const result = await client.get('example.jpg', './example-crop.jpg', { process: 'image/crop,w_100,h_100,x_100,y_100,r_1'});
  } catch (e) {
    console.log(e)
  }
}

cut()

// Putar gambar sebesar 90 derajat.
async function rotate() {
  try {
    const result = await client.get('example.jpg', './example-rotate.jpg', { process: 'image/rotate,90'});
  } catch (e) {
    console.log(e);
  }
}

rotate()

// Perjelas gambar. Atur parameter ke 100.
async function sharpen() {
  try {
    const result = await client.get('example.jpg', './example-sharpen.jpg', { process: 'image/sharpen,100'});
  } catch (e) {
    console.log(e);
  }
}

sharpen()

// Tambahkan watermark ke gambar.
async function watermark() {
  try {
    const result = await client.get('example.jpg', './example-watermark.jpg', { process: 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'});
  } catch (e) {
    console.log(e);
  }
}

watermark()

// Konversi format gambar.
async function format() {
  try {
    const result = await client.get('example.jpg', './example-format.jpg', { process: 'image/format,png'});
  } catch (e) {
    console.log(e);
  }
}

format()

// Dapatkan informasi gambar.
async function info() {
  try {
    const result = await client.get('example.jpg', './example-info.txt', {process: 'image/info'});
  } catch (e) {
    console.log(e);
  }
}

info()
# -*- coding: utf-8 -*-
import os
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket.
bucket_name = 'examplebucket'
# Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur gambar. Contoh: example/example.jpg.
key = 'exampledir/example.jpg'
# Tentukan nama gambar yang diproses.
new_pic = 'exampledir/newexample.jpg'

# Jika gambar yang ingin Anda proses tidak ada di bucket yang ditentukan, Anda harus mengunggah gambar yang disimpan di jalur lokal bucket.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')

# Gunakan gaya gambar kustom untuk memproses gambar. Atur yourCustomStyleName ke nama gaya gambar yang Anda buat di konsol OSS.
style = 'style/yourCustomStyleName'
# Simpan gambar yang diproses ke komputer lokal Anda.
bucket.get_object_to_file(key, new_pic, process=style)
# Setelah gambar diproses, Anda dapat menghapus gambar sumber dari bucket jika Anda tidak lagi membutuhkan gambar tersebut.
# bucket.delete_object(key)
# Jika Anda tidak lagi membutuhkan gambar yang diproses, Anda dapat menghapus gambar tersebut.
# os.remove(new_pic)
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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda.
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. Tentukan wilayah aktual.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Tentukan versi algoritma tanda tangan.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 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. Contoh: example/example.jpg.
	sourceImageName := "example/example.jpg"
	// Simpan gambar yang diproses sebagai newexample.jpg di komputer lokal Anda.
	targetImageName := "D:\\localpath\\newexample.jpg"
	// Gunakan gaya gambar untuk memproses gambar. Atur yourCustomStyleName ke nama gaya gambar yang Anda buat di langkah 1.
	style := "style/yourCustomStyleName"
	// Simpan gambar yang diproses ke komputer lokal Anda.
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
	if err != nil {
		HandleError(err)
	}
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS. */
    
    /* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket tempat gambar sumber disimpan. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan nama gambar sumber. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: exampledir/example.jpg. */
    std::string ObjectName = "exampledir/example.jpg";

     /* Inisialisasi sumber daya seperti sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Gunakan gaya gambar untuk memproses gambar. Ganti yourCustomStyleName dengan nama gaya gambar yang Anda buat di langkah 1. */
    std::string Process = "style/yourCustomStyleName";
    GetObjectRequest request(BucketName, ObjectName);
    request.setProcess(Process);
    auto outcome = client.GetObject(request);
    if (outcome.isSuccess()) {
    std::cout << "Gambar berhasil diproses." << std::endl;
    } else {
    std::cout << "Gagal memproses gambar. Kode kesalahan: " << outcome.error().Code()
              << ", Pesan: " << outcome.error().Message()
              << ", RequestId: " << outcome.error().RequestId() << std::endl;
    }
  
    /* Lepaskan sumber daya seperti sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. */
const char *object_name = "exampledir/exampleobject.txt";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi data bertipe aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Tentukan dua parameter tambahan.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah menggunakan CNAME. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan parameter jaringan, seperti periode timeout. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di main() untuk menginisialisasi sumber daya global, seperti sumber daya jaringan dan memori. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Buat kolam memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat kolam memori termasuk dalam pustaka APR. */
    aos_pool_t *pool;
    /* Buat kolam memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa kolam tidak mewarisi kolam memori lain. */
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
    oss_request_options_t *oss_client_options;
    /* Alokasikan sumber daya memori di kolam memori ke opsi. */
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi oss_client_options. */
    init_options(oss_client_options);
    /* Inisialisasi parameter. */
    aos_string_t bucket;
    aos_string_t object;
    aos_string_t file;
    aos_table_t *headers = NULL;
    aos_table_t *params = NULL;
    aos_table_t *resp_headers = NULL;
    aos_status_t *resp_status = NULL;
    aos_str_set(&bucket, bucket_name);
    aos_str_set(&object, object_name);
    /* Tentukan gaya gambar. */
    params = aos_table_make(pool, 1);
    /* Atur yourCustomStyleName ke nama gaya gambar yang Anda buat di langkah 1. */
    apr_table_set(params, OSS_PROCESS, "style/yourCustomStyleName");
    /* Simpan gambar yang diproses ke komputer lokal Anda. */
    aos_str_set(&file, "yourLocalFileName");
    resp_status = oss_get_object_to_file(oss_client_options, &bucket, &object, headers, params, &file, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("get object to file succeeded\n");
    } else {
        printf("get object to file failed\n");  
    }
    /* Lepaskan kolam memori. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

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.

Anda dapat menambahkan parameter IMG atau parameter gaya gambar ke permintaan GetObject untuk memproses gambar. Untuk informasi lebih lanjut, lihat GetObject.

  • Konfigurasikan Parameter IMG

    Contoh Permintaan:

    GET /oss.jpg?x-oss-process=image/resize,w_100 HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 28 Oct 2022 06:40:10 GMT
    Authorization: OSS qn6qrrqxo2oawuk53otf****:UNQDb7GapEgJkcde6OhZ9J****
  • Tambahkan Parameter Gaya Gambar

    Contoh Permintaan:

    GET /oss.jpg?x-oss-process=style/styleexample HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Fri, 28 Oct 2022 06:40:10 GMT
    Authorization: OSS qn6qrrawuk53oqxo2otf****:UNapEgQDb7GJkcde6OhZ9J****

Referensi

Secara default, IMG tidak menyimpan gambar yang diproses. Namun, OSS memungkinkan Anda menambahkan parameter saveas ke permintaan IMG untuk menyimpan gambar yang diproses ke bucket tertentu sebagai objek. Untuk informasi lebih lanjut, lihat Simpan Gambar yang Diproses.