全部产品
Search
文档中心

Object Storage Service:Pemrosesan citra (Python SDK V1)

更新时间:Nov 29, 2025

Pemrosesan citra adalah layanan yang scalable, aman, hemat biaya, dan sangat andal yang disediakan oleh Object Storage Service (OSS). Setelah mengunggah citra ke OSS, Anda dapat memprosesnya dari perangkat apa pun yang terhubung ke internet menggunakan RESTful API yang sederhana.

Untuk informasi selengkapnya mengenai parameter pemrosesan citra yang didukung, lihat Pemrosesan citra.

Catatan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

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

Proses citra menggunakan parameter pemrosesan citra

  • Proses citra menggunakan satu parameter pemrosesan citra dan simpan hasilnya sebagai file lokal

    # -*- coding: utf-8 -*-
    import os
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 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.
    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 wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk signature V4.
    region = "cn-hangzhou"
    
    # Ganti examplebucket dengan nama bucket Anda.
    bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
    
    # Ganti yourObjectName dengan nama citra tujuan. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkapnya, misalnya example/example.jpg.
    key = 'yourObjectName'
    # Ganti LocalFileName dengan nama citra yang telah diproses.
    new_pic = 'LocalFileName'
    
    # Jika citra tujuan belum ada di bucket yang ditentukan, unggah citra tersebut ke bucket.
    # bucket.put_object_from_file(key, 'yourLocalFile')
    
    # Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px, lalu simpan ke mesin lokal Anda.
    style = 'image/resize,m_fixed,w_100,h_100'
    bucket.get_object_to_file(key, new_pic, process=style)
    
    # Setelah citra diproses, Anda dapat menghapus citra sumber dari bucket jika tidak diperlukan lagi.
    # bucket.delete_object(key)
    # Jika citra yang telah diproses tidak diperlukan lagi, Anda dapat menghapusnya.
    # os.remove(new_pic)
  • Proses citra menggunakan beberapa parameter pemrosesan citra dan simpan hasilnya sebagai file lokal

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

    # -*- coding: utf-8 -*-
    import os
    import oss2
    from oss2.credentials import EnvironmentVariableCredentialsProvider
    
    # 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.
    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 wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk signature V4.
    region = "cn-hangzhou"
    
    # Ganti examplebucket dengan nama bucket Anda.
    bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
    
    # Tentukan nama bucket tempat citra sumber disimpan, misalnya examplebucket.
    bucket_name = 'examplebucket'
    # Tentukan nama citra sumber. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkapnya, misalnya exampledir/example.jpg.
    key = 'exampledir/example.jpg'
    # Tentukan nama citra yang telah diproses.
    new_pic = 'exampledir/newexample.jpg'
    
    # Jika citra tidak berada di bucket yang ditentukan, unggah citra dari path lokal Anda ke bucket.
    # bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
    
    # Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px, putar sebesar 90 derajat, lalu simpan ke mesin lokal Anda.
    style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
    bucket.get_object_to_file(key, new_pic, process=style)
    # Setelah citra diproses, Anda dapat menghapus citra sumber dari bucket jika tidak diperlukan lagi.
    # bucket.delete_object(key)
    # Jika citra yang telah diproses tidak diperlukan lagi, Anda dapat menghapusnya.
    # os.remove(new_pic)

Proses citra menggunakan gaya citra

Anda dapat mengenkapsulasi beberapa parameter pemrosesan citra ke dalam sebuah gaya, lalu menggunakan gaya tersebut untuk memproses citra secara batch. Untuk informasi selengkapnya, lihat Gaya citra. Kode berikut menunjukkan cara memproses citra menggunakan gaya citra:

# -*- coding: utf-8 -*-
import os
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 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.
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 wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk signature V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket tempat citra sumber disimpan, misalnya examplebucket.
bucket_name = 'examplebucket'
# Tentukan nama citra sumber. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkapnya, misalnya exampledir/example.jpg.
key = 'exampledir/example.jpg'
# Tentukan nama citra yang telah diproses.
new_pic = 'exampledir/newexample.jpg'

# Jika citra tidak berada di bucket yang ditentukan, unggah citra dari path lokal Anda ke bucket.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')

# Proses citra menggunakan gaya kustom. Ganti yourCustomStyleName dengan nama gaya citra yang telah Anda buat di Konsol OSS.
style = 'style/yourCustomStyleName'
# Simpan citra yang telah diproses ke mesin lokal Anda.
bucket.get_object_to_file(key, new_pic, process=style)
# Setelah citra diproses, Anda dapat menghapus citra sumber dari bucket jika tidak diperlukan lagi.
# bucket.delete_object(key)
# Jika citra yang telah diproses tidak diperlukan lagi, Anda dapat menghapusnya.
# os.remove(new_pic)

Persistensi pemrosesan citra

Anda dapat menggunakan API ImgSaveAs untuk menyimpan citra yang telah diproses ke bucket tertentu. Kode berikut menunjukkan cara melakukan operasi persistensi pemrosesan citra:

# -*- coding: utf-8 -*-
import os
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 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.
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 wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk signature V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket tempat citra sumber disimpan.
source_bucket_name = 'srcbucket'
# Tentukan nama bucket tempat Anda ingin menyimpan citra yang telah diproses. Bucket ini harus berada di wilayah yang sama dengan bucket sumber.
target_bucket_name = 'destbucket'
# Tentukan nama citra sumber. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkap file tersebut, misalnya example/example.jpg.
source_image_name = 'example/example.jpg'

# Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px.
style = 'image/resize,m_fixed,w_100,h_100'
# Tentukan nama citra yang telah diproses. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkap file tersebut, misalnya exampledir/example.jpg.
target_image_name = 'exampledir/example.jpg'
process = "{0}|sys/saveas,o_{1},b_{2}".format(style,
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(target_image_name))),
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(target_bucket_name))))
result = bucket.process_object(source_image_name, process)
print(result)

Buat URL yang ditandatangani untuk file dengan parameter pemrosesan citra

URL akses untuk file privat bersifat ditandatangani. OSS tidak mengizinkan penambahan parameter pemrosesan citra secara langsung ke URL yang ditandatangani. Untuk memproses file privat, Anda harus menyertakan parameter pemrosesan citra dalam signature. Kode berikut memberikan contohnya:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# 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.
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 wilayah tempat bucket berada, seperti cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk signature V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan nama bucket, misalnya examplebucket.
bucket_name = 'examplebucket'
# Tentukan nama bucket tempat citra disimpan. Jika citra tidak berada di direktori root bucket, Anda harus menentukan path lengkap file tersebut, misalnya exampledir/example.jpg.
key = 'exampledir/example.jpg'

# Jika citra tidak berada di bucket yang ditentukan, unggah citra ke bucket tujuan.
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# Ubah ukuran citra menjadi lebar dan tinggi tetap 100 px, lalu putar sebesar 90 derajat.
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# Hasilkan URL yang ditandatangani yang berlaku selama 10 menit. Periode validitas diukur dalam detik.
url = bucket.sign_url('GET', key, 10 * 60, params={'x-oss-process': style})
print(url)

Referensi

Untuk kode contoh lengkap mengenai pemrosesan citra, lihat contoh di GitHub.