All Products
Search
Document Center

Object Storage Service:Pemrosesan gambar (Android SDK)

Last Updated:Mar 20, 2026

OSS Image Processing (IMG) memungkinkan Anda mengubah ukuran, memotong, memutar, dan mentransformasi gambar yang disimpan di OSS tanpa mengubah objek sumber. Pemrosesan dilakukan saat unduhan: tambahkan parameter x-oss-process ke permintaan, dan OSS akan mengembalikan gambar yang telah ditransformasi.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Menginisialisasi instans OSSClient. Lihat Initialization untuk opsi penyiapan, termasuk nama domain kustom dan Security Token Service (STS).

  • Sebuah objek gambar yang diunggah ke Bucket OSS

Cara kerja

Ketiga metode akses mengikuti pola yang sama: tambahkan x-oss-process:<operation> ke permintaan unduhan. String operasi menentukan transformasi yang akan diterapkan.

Sebagai contoh, image/resize,m_fixed,w_100,h_100 mengubah ukuran gambar menjadi tepat 100×100 piksel. Untuk menerapkan transformasi berbeda, ganti string ini dengan parameter IMG yang sesuai. Lihat IMG parameters untuk daftar lengkapnya.

Catatan

Parameter IMG hanya berlaku untuk data gambar yang diunduh. Objek sumber di OSS tidak diubah. Untuk menyimpan gambar yang telah diproses sebagai objek baru, lihat Save processed images.

Terapkan pemrosesan gambar

Pilih metode akses yang sesuai dengan kasus penggunaan Anda:

MetodeKapan digunakan
Akses terotorisasiPermintaan unduhan bertanda tangan menggunakan Android SDK — pendekatan paling umum
Akses menggunakan OSS SDKPenggunaan SDK yang disederhanakan dengan penyiapan minimal
Akses anonimObjek yang dapat dibaca publik dan tidak memerlukan penandatanganan

Akses terotorisasi

Panggil request.setxOssProcess() untuk menambahkan parameter pemrosesan ke permintaan unduhan bertanda tangan.

// Buat permintaan unduhan.
// Ganti "examplebucket" dengan nama bucket Anda.
// Ganti "exampledir/exampleobject.jpg" dengan path lengkap objek (tanpa nama bucket).
GetObjectRequest request = new GetObjectRequest("examplebucket", "exampledir/exampleobject.jpg");

// Tambahkan parameter pemrosesan gambar.
// Ganti nilai ini dengan operasi IMG yang ingin Anda terapkan.
request.setxOssProcess("image/resize,m_fixed,w_100,h_100");

OSSAsyncTask task = oss.asyncGetObject(request, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
    @Override
    public void onSuccess(GetObjectRequest request, GetObjectResult result) {
        InputStream inputStream = result.getObjectContent();
        byte[] buffer = new byte[2048];
        int len;

        try {
            while ((len = inputStream.read(buffer)) != -1) {
                // Proses data gambar yang diunduh.
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onFailure(GetObjectRequest request, ClientException clientException, ServiceException serviceException) {
        // Tangani exception sesuai kebutuhan.
    }
});

Untuk menerapkan transformasi berbeda, ganti nilai yang diberikan ke setxOssProcess(). Sebagai contoh, gunakan "image/rotate,90" untuk memutar gambar sebesar 90 derajat.

Akses menggunakan OSS SDK

GetObjectRequest request = new GetObjectRequest("bucket-name", "image-name");
request.setxOssProcess("image/resize,m_lfit,w_100,h_100");
OSSAsyncTask task = ossClient.asyncGetObject(request, getCallback);

Akses anonim

Untuk objek yang dapat dibaca publik, hasilkan URL dengan presignPublicObjectURL(), lalu tambahkan x-oss-process:<operation> sebagai parameter kueri.

String url = oss.presignPublicObjectURL(testBucket, testObject);
OSSLog.logDebug("signPublicURL", "get url: " + url);
// Tambahkan x-oss-process ke URL.
// Contoh: url + "?x-oss-process=image/resize,m_fixed,w_100,h_100"

Simpan gambar yang telah diproses

Untuk menyimpan gambar yang telah diproses sebagai objek baru di OSS, gunakan ImagePersistRequest dan asyncImagePersist().

Parameter berikut wajib diisi:

ParameterDeskripsiContoh
fromBucketNama bucket sumbermy-source-bucket
fromObjectKeyPath lengkap objek sumber, termasuk ekstensi filephotos/sample.jpg
toBucketNama bucket tujuanmy-output-bucket
toObjectKeyPath lengkap objek tujuan, termasuk ekstensi fileprocessed/sample-resized.jpg
actionString operasi IMG yang akan diterapkanimage/resize,m_lfit,w_100,h_100
ImagePersistRequest request = new ImagePersistRequest(
    fromBucket,
    fromObjectKey,
    toBucket,
    toObjectKey,
    action
);

OSSAsyncTask task = oss.asyncImagePersist(request, new OSSCompletedCallback<ImagePersistRequest, ImagePersistResult>() {
    @Override
    public void onSuccess(ImagePersistRequest request, ImagePersistResult result) {
        Log.i("info", "Success");
    }

    @Override
    public void onFailure(ImagePersistRequest request, ClientException clientException, ServiceException serviceException) {
        if (clientException != null) {
            // Terjadi error di sisi client, seperti masalah jaringan.
            clientException.printStackTrace();
        }
        if (serviceException != null) {
            // Terjadi error di sisi server.
            Log.e("ErrorCode", serviceException.getErrorCode());
            Log.e("RequestId", serviceException.getRequestId());
            Log.e("HostId", serviceException.getHostId());
            Log.e("RawMessage", serviceException.getRawMessage());
        }
    }
});

Langkah selanjutnya