全部产品
Search
文档中心

Object Storage Service:Persegi panjang dengan sudut membulat

更新时间:Jul 06, 2025

Anda dapat membulatkan sudut gambar persegi panjang yang disimpan di Object Storage Service (OSS) menggunakan operasi rounded-corners. Topik ini menjelaskan parameter dari operasi rounded-corners dan memberikan contoh cara membulatkan sudut gambar persegi panjang.

Parameter

Nama operasi: rounded-corners.

Tabel berikut menjelaskan parameter yang dapat Anda konfigurasikan:

Parameter

Deskripsi

Rentang nilai

r

Radius dari sudut-sudut.

[1,4096]

Catatan penggunaan

  • Jika format akhir (PNG, WebP, atau BMP) dari sebuah gambar mendukung saluran alpha, area di luar persegi panjang membulat pada gambar menjadi transparan. Jika format akhir gambar adalah JPG, area tersebut menjadi putih. Kami menyarankan Anda menyimpan gambar yang telah diproses dalam format PNG.

  • Jika radius yang ditentukan untuk sudut membulat lebih besar daripada radius lingkaran terbesar yang dapat dimuat dalam gambar sumber, maka radius lingkaran terbesar dari gambar sumber digunakan sebagai radius untuk membulatkan sudut. Dalam hal ini, radius sudut sama dengan setengah dari sisi terpendek gambar sumber.

  • Operasi rounded-corners tidak didukung untuk gambar GIF.

Metode

Membulatkan sudut gambar dengan akses publik-baca atau publik-baca-tulis

Topik ini memberikan contoh cara membulatkan sudut gambar dalam bucket oss-console-img-demo-cn-hangzhou di wilayah China (Hangzhou). Gambar tersebut di-hosting di URL berikut:

Membulatkan sudut gambar pribadi

Anda dapat menggunakan OSS SDK dan RESTful API untuk membulatkan sudut gambar pribadi.

Menggunakan OSS SDK

Kode berikut memberikan contoh cara menggunakan OSS SDK untuk bahasa pemrograman umum guna membulatkan sudut gambar pribadi. Untuk informasi lebih lanjut tentang cara membulatkan sudut gambar menggunakan bahasa pemrograman lainnya, lihat Ikhtisar.

Java

OSS SDK for Java V3.17.4 atau lebih tinggi diperlukan.

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 {
        // Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan wilayah tempat bucket berada. Contoh: cn-hangzhou.
        String region = "cn-hangzhou";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum mengeksekusi kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek. Jangan masukkan nama bucket dalam jalur lengkap.
        String objectName = "example.jpg";
        // Tentukan jalur lengkap gambar yang telah diproses. Contoh: D:\\dest.jpg. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh akan disimpan di jalur tersebut.
        String pathName = "D:\\dest.jpg";

        // Buat instance OSSClient.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Atur radius pembulatan sudut menjadi 30 piksel
            String image = "image/rounded-corners,r_30";
            GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
            request.setProcess(image);
            // Tetapkan nama gambar yang telah diproses menjadi dest.jpg dan simpan ke komputer lokal Anda.
            // Jika Anda hanya menentukan nama gambar yang telah diproses seperti dest.jpg tanpa menentukan jalur lokal, gambar yang telah diproses akan disimpan ke jalur lokal proyek tempat program sampel milik.
            ossClient.getObject(request, new File("D:\\dest.jpg"));
        } catch (OSSException oe) {
            System.out.println("Tangkap OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan respons kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Tangkap ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

OSS SDK for PHP V2.7.0 atau lebih tinggi diperlukan.

<?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 mengeksekusi kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Jangan masukkan nama bucket dalam jalur lengkap.
$object = "example.jpg";
// Tentukan jalur lengkap gambar yang telah diproses. Contoh: D:\\dest.jpg. Jika gambar dengan nama yang sama sudah ada di jalur tersebut, gambar yang telah diproses akan menimpa gambar tersebut. Jika tidak, gambar yang telah diproses akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama gambar yang telah diproses seperti dest.jpg tanpa menentukan jalur lokal, gambar yang telah diproses akan disimpan ke jalur lokal proyek tempat program sampel milik.
$download_file = "D:\\dest.jpg";

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

// Atur radius pembulatan sudut menjadi 30 piksel.
$image = "image/rounded-corners,r_30";

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

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

Python

OSS SDK for Python V2.18.4 atau lebih tinggi diperlukan.

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

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum mengeksekusi kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
# Tentukan endpoint sebenarnya.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Tentukan nama gambar yang ingin Anda proses. Jika gambar tidak disimpan di direktori root bucket, Anda harus menyertakan jalur lengkap gambar. Contoh: exampledir/src.gif.
key = 'example.jpg'
# Tentukan nama gambar yang telah diproses.
new_pic = 'D:\\dest.jpg'

# Atur radius pembulatan sudut menjadi 30 piksel.
image = 'image/rounded-corners,r_30'
bucket.get_object_to_file(key, new_pic, process=image)

Go

OSS SDK for Go V3.0.2 atau lebih tinggi diperlukan.

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 mengeksekusi kode sampel, 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.
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya.
	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. Contoh: examplebucket.
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}

	// Tentukan nama gambar yang ingin Anda proses. Jika gambar tidak disimpan di direktori root bucket, Anda harus menyertakan jalur lengkap gambar. Contoh: exampledir/src.gif.
	sourceImageName := "example.jpg"
	// Tentukan nama gambar yang telah diproses.
	targetImageName := "D://dest.jpg"
	// Atur radius pembulatan sudut menjadi 30 piksel.
	image := "image/rounded-corners,r_30"
	err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
	if err != nil {
		HandleError(err)
	}
}

Menggunakan RESTful API

Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil RESTful API. Untuk informasi lebih lanjut, lihat GetObject.

Anda dapat menambahkan parameter untuk membulatkan sudut gambar ke operasi GetObject.

GET /oss.jpg?x-oss-process=image/rounded-corners,r_30 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS qn6q**************:77Dv****************