All Products
Search
Document Center

Object Storage Service:Pemrosesan citra (PHP SDK V1)

Last Updated:Nov 30, 2025

Pemrosesan citra adalah layanan pemrosesan citra berskala besar, aman, berbiaya rendah, dan sangat andal dari Object Storage Service (OSS). Setelah mengunggah citra ke OSS, Anda dapat memprosesnya kapan saja dan dari mana saja melalui perangkat yang terhubung ke internet menggunakan antarmuka RESTful yang sederhana.

Catatan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Buat OssClient.

  • Untuk informasi selengkapnya tentang parameter pemrosesan citra yang didukung, lihat Pemrosesan citra. Contoh kode lengkap tersedia di GitHub.

Gunakan parameter pemrosesan citra untuk memproses citra

  • Proses citra dengan satu parameter pemrosesan citra dan simpan sebagai file lokal.

    <?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    $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 = "yourEndpoint";
    // Atur nama bucket. Misalnya, examplebucket.
    $bucket= "examplebucket";
    // Atur path lengkap objek. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
    $object = "exampledir/exampleobject.jpg";
    // Atur path lengkap file lokal. Misalnya, D:\\localpath\\example-resize.jpg. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika belum ada, file baru akan dibuat.
    // Jika Anda hanya menentukan nama file lokal, seperti example-resize.jpg, tanpa path lengkap, file akan disimpan secara default ke path lokal proyek tempat program contoh berada.
    $download_file = "D:\\localpath\\example-resize.jpg";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Jika citra sumber tidak berada di bucket yang ditentukan, unggah citra tersebut ke bucket.
    // $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");
    
    // Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px.
    $options = array(
        OssClient::OSS_FILE_DOWNLOAD => $download_file,
        OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );
    // Beri nama citra yang diproses sebagai example-resize.jpg dan simpan ke path lokal.
    $ossClient->getObject($bucket, $object, $options);
    
    // Setelah citra diproses, hapus citra sumber dari bucket jika tidak diperlukan lagi.
    // $ossClient->deleteObject($bucket, $object);                           
  • Proses citra dengan beberapa parameter pemrosesan citra dan simpan sebagai file lokal.

    Saat menggunakan beberapa parameter pemrosesan citra, pisahkan parameter tersebut dengan garis miring (/).

    <?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    $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 = "yourEndpoint";
    // Atur nama bucket. Misalnya, examplebucket.
    $bucket= "examplebucket";
    // Atur path lengkap objek. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
    $object = "exampledir/exampleobject.jpg";
    // Atur path lengkap file lokal. Misalnya, D:\\localpath\\example-new.jpg. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika belum ada, file baru akan dibuat.
    // Jika Anda hanya menentukan nama file lokal, seperti example-new.jpg, tanpa path lengkap, file akan disimpan secara default ke path lokal proyek tempat program contoh 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 citra sumber tidak berada di bucket yang ditentukan, unggah citra tersebut ke bucket.
    // $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");
    
    // Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px, lalu putar 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);
    
    // Beri nama citra yang diproses sebagai example-new.jpg dan simpan ke path lokal.
    $ossClient->getObject($bucket, $object, $options);
    
    // Setelah citra diproses, hapus citra sumber dari bucket jika tidak diperlukan lagi.
    // $ossClient->deleteObject($bucket, $object);                              

Gunakan gaya citra untuk memproses citra

Anda dapat membuat gaya citra di Konsol OSS untuk mengenkapsulasi beberapa parameter pemrosesan citra, lalu menggunakan gaya tersebut untuk memproses citra secara batch. Untuk informasi selengkapnya, lihat Gaya citra.

Kode berikut menunjukkan cara memproses citra menggunakan gaya citra.

<?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$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 = "yourEndpoint";
// Atur nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";
// Atur path lengkap objek. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
$object = "exampledir/exampleobject.jpg";
// Atur path lengkap file lokal. Misalnya, D:\\localpath\\example-new.jpg. Jika file lokal yang ditentukan sudah ada, file tersebut akan ditimpa. Jika belum ada, file baru akan dibuat.
// Jika Anda hanya menentukan nama file lokal, seperti example-new.jpg, tanpa path lengkap, file akan disimpan secara default ke path lokal proyek tempat program contoh 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 citra sumber tidak berada di bucket yang ditentukan, unggah citra tersebut ke bucket.
// $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");

// Proses citra menggunakan gaya kustom.
// Atur yourCustomStyleName ke nama gaya citra yang telah Anda buat di Konsol OSS.
$style = "style/yourCustomStyleName";

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

// Beri nama citra yang diproses sebagai example-new.jpg dan simpan ke path lokal.
$ossClient->getObject($bucket, $object, $options);

// Setelah citra diproses, hapus citra sumber dari bucket jika tidak diperlukan lagi.
// $ossClient->deleteObject($bucket, $object);                              

Persistensi pemrosesan citra

Secara default, layanan pemrosesan citra tidak menyimpan citra yang telah diproses. Anda dapat menggunakan operasi ImgSaveAs untuk menyimpan citra yang telah diproses ke bucket sumbernya.

Kode berikut menunjukkan cara melakukan operasi persistensi pemrosesan citra.

<?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$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 = "yourEndpoint";
// Atur nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";
// Atur path lengkap objek sumber. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
$object = "exampledir/exampleobject.jpg";
// Atur path lengkap objek tujuan. Misalnya, example-new.jpg.
$save_object = "example-new.jpg";

function base64url_encode($data)
{
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
// Jika citra sumber tidak berada di bucket yang ditentukan, unggah citra tersebut ke bucket.
// $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");

// Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px, lalu putar 90 derajat.
$style = "image/resize,m_fixed,w_100,h_100/rotate,90";

$process = $style.
           '|sys/saveas'.
           ',o_'.base64url_encode($save_object).
           ',b_'.base64url_encode($bucket);

// Beri nama citra yang diproses sebagai example-new.png dan simpan ke bucket saat ini.
$result = $ossClient->processObject($bucket, $object, $process);
// Cetak hasil pemrosesan.
print($result);

Hasilkan URL yang ditandatangani untuk file dengan parameter pemrosesan citra

URL akses untuk file privat harus ditandatangani. OSS tidak mendukung penambahan parameter pemrosesan citra langsung ke URL yang ditandatangani. Untuk memproses file privat, Anda harus menyertakan parameter pemrosesan citra dalam tanda tangan. Contoh kode berikut menunjukkan caranya:

<?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$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 = "yourEndpoint";
// Atur nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";
// Atur path lengkap objek. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
$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 pemrosesan citra. URL ini berlaku selama 3.600 detik. Anda dapat mengakses URL tersebut melalui browser.
$timeout = 3600;

$options = array(
    // Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px.
    OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );

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

Untuk menghasilkan URL yang ditandatangani untuk file yang berisi parameter watermark, lihat contoh berikut:

<?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 ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$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 = "yourEndpoint";
// Atur nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";
// Atur path lengkap objek. Misalnya, exampledir/exampleobject.jpg. Path lengkap tidak boleh mencakup nama bucket.
$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 berisi parameter watermark. URL ini berlaku selama 3.600 detik. Anda dapat mengakses URL tersebut melalui browser.
$timeout = 3600;

function base64url_encode($data)
{
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
// Atur teks watermark, misalnya Hello World, atau path lengkap citra watermark, misalnya panda.jpg.
// Saat menambahkan citra watermark ke citra, pastikan citra watermark disimpan di bucket yang sama dengan citra sumber.
$content = "Hello World";
$string = base64url_encode($content);

$options = array(
    // Tambahkan watermark ke citra.
    OssClient::OSS_PROCESS => "image/watermark,text_".$string
);

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