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.
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:
| Metode | Kapan digunakan |
|---|---|
| Akses terotorisasi | Permintaan unduhan bertanda tangan menggunakan Android SDK — pendekatan paling umum |
| Akses menggunakan OSS SDK | Penggunaan SDK yang disederhanakan dengan penyiapan minimal |
| Akses anonim | Objek 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:
| Parameter | Deskripsi | Contoh |
|---|---|---|
fromBucket | Nama bucket sumber | my-source-bucket |
fromObjectKey | Path lengkap objek sumber, termasuk ekstensi file | photos/sample.jpg |
toBucket | Nama bucket tujuan | my-output-bucket |
toObjectKey | Path lengkap objek tujuan, termasuk ekstensi file | processed/sample-resized.jpg |
action | String operasi IMG yang akan diterapkan | image/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
IMG parameters — referensi lengkap untuk semua transformasi gambar yang didukung.
Initialization — siapkan instans
OSSClientAnda.