All Products
Search
Document Center

Object Storage Service:Penyesuaian kualitas

Last Updated:Sep 10, 2026

Penyesuaian kualitas mengompresi gambar dalam format aslinya. Gunakan parameter penyesuaian kualitas untuk mengontrol kualitas gambar yang disimpan di OSS.

Penting

Penyesuaian kualitas tidak berpengaruh pada format lossless seperti PNG.

PNG menggunakan kompresi tanpa kehilangan data. Ketika parameter resize dan quality digunakan bersamaan, pengubahan ukuran dapat meningkatkan kompleksitas gambar dan biaya kompresi, sehingga berpotensi memperbesar ukuran file. Parameter quality tidak berlaku untuk gambar PNG dan akan diabaikan.

Untuk mengurangi ukuran gambar PNG, pertama-tama gunakan parameter format untuk mengonversinya ke JPG atau WebP, lalu terapkan parameter quality. Contohnya:

image/format,jpg/quality,Q_30

Atau:

image/format,webp/quality,Q_30

Parameter

Aksi: quality

Tabel berikut menjelaskan parameter tersebut.

Parameter

Deskripsi

Nilai yang valid

q

Mengatur kualitas relatif. Mengompresi gambar sumber berdasarkan persentase.

Sebagai contoh, jika kualitas gambar sumber adalah 100%, menambahkan parameter quality,q_90 menghasilkan gambar dengan kualitas 90%. Jika kualitas gambar sumber adalah 80%, menambahkan parameter quality,q_90 menghasilkan gambar dengan kualitas 72%.

Catatan

Parameter q hanya berlaku untuk JPG. Untuk WebP, parameter ini berperilaku seperti parameter Q dan mengatur kualitas absolut.

[1,100]

Q

Mengatur kualitas absolut.

  • Jika kualitas sumber sama dengan atau lebih tinggi dari Q%, gambar dikompresi menjadi Q%.

    Sebagai contoh, jika kualitas gambar sumber adalah 95%, menambahkan parameter quality,Q_90 menghasilkan gambar dengan kualitas 90%.

  • Jika kualitas sumber lebih rendah dari Q%, tidak terjadi kompresi. Kualitas tetap tidak berubah.

    Sebagai contoh, jika kualitas gambar sumber adalah 80%, menambahkan parameter quality,Q_90 menghasilkan gambar dengan kualitas 80%.

[1,100]

Contoh

Menyesuaikan kualitas gambar baca-publik atau baca-tulis publik

Tambahkan parameter pemrosesan gambar ke URL gambar untuk menyesuaikan kualitasnya.

Contoh berikut menggunakan bucket oss-console-img-demo-cn-hangzhou di wilayah China (Hangzhou). Titik akhir publiknya adalah:

Menyesuaikan kualitas relatif

Atur kualitas relatif menjadi 80% dengan quality,q_80. URL untuk memproses gambar tersebut adalah: https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/quality,q_80

Menyesuaikan kualitas absolut

Atur kualitas absolut menjadi 90% dengan quality,Q_90. URL untuk memproses gambar tersebut adalah: https://oss-console-img-demo-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/quality,Q_90

Menyesuaikan kualitas gambar privat

Gunakan SDK Alibaba Cloud atau REST API untuk menyesuaikan kualitas gambar privat.

Gunakan SDK Alibaba Cloud

Contoh berikut menyesuaikan kualitas gambar dengan SDK Alibaba Cloud umum. Ikhtisar mencakup SDK tambahan.

Java

Diperlukan Java SDK versi 3.17.4 atau yang lebih baru.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GetObjectRequest;
import java.io.File;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // Titik akhir China (Hangzhou) digunakan sebagai contoh. Tentukan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah yang sesuai dengan titik akhir, misalnya 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, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan path lengkap objek. Path lengkap tidak boleh menyertakan nama bucket.
        String objectName = "example.jpg";
        // Tentukan path lengkap file lokal, misalnya D:\\dest.jpg. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
        String pathName = "D:\\dest.jpg";

        // Buat instance OSSClient.
        // Setelah instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepas sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Atur kualitas absolut gambar sumber menjadi 80%.
            String image = "image/quality,Q_80";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Beri nama gambar yang diproses sebagai dest.jpg dan simpan ke path lokal.
            // Jika Anda hanya menentukan nama file, seperti dest.jpg, tanpa path lengkap, file akan disimpan ke path lokal proyek secara default.
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan tanggapan error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, artinya klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
PHP

Diperlukan PHP SDK versi 2.7.0 atau yang lebih baru.

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;

// 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();
// Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket, misalnya examplebucket.
$bucket= "examplebucket";
// Tentukan path lengkap objek, misalnya exampledir/exampleobject.jpg. Path lengkap tidak boleh menyertakan nama bucket.
$object = "src.jpg";
// Tentukan path lengkap file lokal, misalnya D:\\dest.jpg. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika tidak, file baru akan dibuat.
// Jika Anda hanya menentukan nama file, seperti dest.jpg, tanpa path lengkap, file akan disimpan ke path lokal proyek secara default.
$download_file = "D:\\dest.jpg";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,        
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        // Tentukan ID wilayah umum Alibaba Cloud.
        "region" => "cn-hangzhou"
    );
$ossClient = new OssClient($config);

// Atur kualitas absolut gambar sumber menjadi 80%.
$image = "image/quality,Q_80";

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

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

Diperlukan Python SDK versi 2.18.4 atau yang lebih baru.

# -*- 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())
# Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah umum Alibaba Cloud.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Tentukan nama gambar sumber. Jika gambar tidak berada di direktori root bucket, tentukan path lengkapnya, misalnya exampledir/example.jpg.
key = 'src.jpg'
# Tentukan nama gambar yang diproses.
new_pic = 'D:\\dest.jpg'

# Atur kualitas absolut gambar sumber menjadi 80%.
image = 'image/quality,Q_80'
bucket.get_object_to_file(key, new_pic, process=image)
Go

Diperlukan Go SDK versi 3.0.2 atau yang lebih baru.

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

func main() {
	// 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.
	// Atur yourEndpoint ke titik akhir bucket. Titik akhir China (Hangzhou) digunakan sebagai contoh. Atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan titik akhir yang sebenarnya untuk wilayah lain.
	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, misalnya examplebucket.
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama gambar sumber. Jika gambar tidak berada di direktori root bucket, tentukan path lengkapnya, misalnya exampledir/example.jpg.
	sourceImageName := "src.jpg"
	// Tentukan nama gambar yang diproses.
	targetImageName := "D:\\dest.jpg"
	// Atur kualitas absolut gambar sumber menjadi 80%.
	image := "image/quality,Q_80"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Gunakan REST API

Untuk kustomisasi lebih lanjut, panggil REST API secara langsung. Anda harus menerapkan algoritma signature Signature V4 (direkomendasikan).

Tambahkan parameter penyesuaian kualitas ke permintaan GetObject.

GET /oss.jpg?x-oss-process=image/quality,Q_80 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e