Anda dapat menambahkan watermark ke gambar dan file yang disimpan di Object Storage Service (OSS) untuk melindungi kepemilikan serta mencegah replikasi dan penggunaan tanpa izin.
Skenario
-
Perlindungan hak cipta: Watermark pada gambar Anda menunjukkan kepemilikan hak cipta dan mencegah penggunaan tanpa izin.
-
Promosi merek: Watermark yang berisi logo atau nama merek Anda pada gambar, video, atau dokumen meningkatkan kesadaran merek.
-
Pencegahan pemalsuan: Watermark pada dokumen resmi, sertifikat, atau laporan mencegah perubahan tidak sah dan mengurangi risiko pemalsuan.
-
Mencegah pencurian gambar: Menambahkan watermark mencegah pencurian gambar karena gambar daring mudah disalin dan dipublikasikan ulang.
-
Kepatuhan hukum: Beberapa undang-undang atau kontrak mengharuskan Anda menambahkan watermark ke konten tertentu sebelum dipublikasikan.
Catatan
-
Anda dapat menggunakan object URL, OSS SDK, atau operasi API untuk mengonfigurasi parameter IMG yang digunakan untuk memproses gambar. Pada contoh ini, object URL digunakan. Anda hanya dapat menggunakan object URL untuk mengonfigurasi parameter IMG pada gambar dengan akses public-read. Jika ingin mengonfigurasi parameter IMG untuk gambar privat, gunakan OSS SDK atau operasi API. Untuk informasi selengkapnya, lihat Metode pemrosesan gambar.
-
Gambar watermark harus disimpan di bucket saat ini. Untuk menggunakan gambar daring atau lokal, unggah terlebih dahulu ke bucket saat ini.
-
Watermark gambar saat ini hanya mendukung format berikut: JPG, PNG, BMP, WebP, dan TIFF.
-
Anda dapat menambahkan hingga tiga watermark gambar berbeda ke satu gambar. Watermark tersebut tidak boleh saling tumpang tindih sepenuhnya.
-
Watermark teks tidak mendukung karakter Tionghoa Tradisional.
Parameter
action: watermark
Tabel berikut menjelaskan parameter-parameter tersebut.
-
Parameter dasar
Parameter
Wajib
Deskripsi
Nilai
t
Tidak
Menentukan opasitas watermark gambar atau teks.
[0, 100]
Bawaan: 100 (sepenuhnya buram).
g
Tidak
Menentukan posisi referensi watermark pada gambar.
-
nw: kiri atas
-
north: tengah atas
-
ne: kanan atas
-
west: tengah kiri
-
center: tengah
-
east: tengah kanan
-
sw: kiri bawah
-
south: tengah bawah
-
se (bawaan): kanan bawah
Untuk detailnya, lihat diagram posisi referensi di bawah.
x
Tidak
Menentukan offset horizontal dari tepi gambar. Parameter ini hanya berlaku ketika
gdiatur kenw,west,sw,ne,east, atause.[0, 4096]
Bawaan: 10
Unit: piksel (px)
y
Tidak
Menentukan offset vertikal dari tepi gambar. Parameter ini hanya berlaku ketika
gdiatur kenw,north,ne,sw,south, atause.[0, 4096]
Bawaan: 10
Unit: piksel (px)
voffset
Tidak
Parameter ini berlaku ketika
gdiatur kewest,center, ataueast, dan menggeser watermark secara vertikal.[-1000, 1000]
Bawaan: 0
Unit: piksel (px)
fill
Tidak
Menentukan apakah watermark gambar atau teks akan di-tiling (diulang) di seluruh gambar sumber.
CatatanUntuk menggunakan fitur watermark berulang pada watermark gambar, ajukan permintaan di Quota Center.
-
1: Mengulang watermark gambar atau teks di seluruh gambar sumber.
-
0 (bawaan): Tidak mengulang watermark di seluruh gambar sumber.
padx
Tidak
Menentukan jarak horizontal antara watermark berulang yang berdekatan. Parameter ini hanya berlaku ketika
filldiatur ke 1.[0, 4096]
Bawaan: 0
Unit: piksel (px)
pady
Tidak
Menentukan jarak vertikal antara watermark berulang yang berdekatan. Parameter ini hanya berlaku ketika
filldiatur ke 1.[0, 4096]
Bawaan: 0
Unit: piksel (px)
Offset horizontal, offset vertikal, dan offset vertikal dari garis tengah menyesuaikan posisi watermark tunggal dan tata letak watermark berulang.
Diagram berikut menunjukkan posisi referensi dan nilai-nilainya.

-
-
Parameter watermark gambar
Parameter
Wajib
Deskripsi
Nilai
image
Ya
Menentukan jalur lengkap objek yang akan digunakan sebagai watermark gambar. Jalur lengkap objek harus dikodekan dalam bentuk URL-safe Base64 agar transmisi melalui URL berjalan dengan benar. Untuk informasi selengkapnya, lihat Pengkodean Base64 yang aman untuk URL. Misalnya, jika gambar watermark
panda.pngberada di direktoriimage, Anda harus mengkodekan jalur lengkapimage/panda.pngmenggunakan URL-safe Base64 sehingga menghasilkanaW1hZ2UvcGFuZGEucG5n.CatatanGambar watermark harus berupa objek yang disimpan di bucket yang sama.
String yang dikodekan dalam bentuk URL-safe Base64.
-
Parameter pra-pemrosesan gambar watermark
Anda dapat menggunakan semua parameter dari aksi resize, custom crop, indexed slice, rounded corners, dan rotate untuk memproses gambar watermark sebelumnya. Selain itu, pra-pemrosesan gambar watermark juga mendukung parameter penskalaan P:
Parameter
Deskripsi
Nilai
P
Menyesuaikan ukuran watermark gambar berdasarkan persentase dimensi gambar sumber. Misalnya, jika Anda mengatur parameter ini ke 10 dan gambar sumber berukuran 100 × 100 piksel, maka gambar watermark diskalakan menjadi 10 × 10 piksel. Jika gambar sumber diubah menjadi 200 × 200 piksel, watermark akan diskalakan menjadi 20 × 20 piksel.
[1, 100]
-
Parameter watermark teks
Parameter
Wajib
Deskripsi
Nilai
text
Ya
Menentukan konten teks watermark. Teks harus dikodekan dalam bentuk URL-safe Base64. Untuk informasi selengkapnya, lihat Pengkodean Base64 yang aman untuk URL.
String teks tidak boleh melebihi 64 byte sebelum dikodekan Base64.
type
Tidak
Menentukan font watermark teks. Nama font harus dikodekan dalam bentuk URL-safe Base64.
Untuk daftar font yang didukung beserta nilai kodenya, lihat tabel jenis font dan pengkodeannya.
Bawaan: wqy-zenhei (dikodekan sebagai d3F5LXplbmhlaQ)
color
Tidak
Menentukan warna watermark teks.
Nilai warna heksadesimal RGB. Contohnya, 000000 untuk hitam dan FFFFFF untuk putih.
Bawaan: 000000 (hitam)
size
Tidak
Menentukan ukuran font watermark teks.
(0, 1000]
Bawaan: 40
Unit: piksel (px)
shadow
Tidak
Menentukan opasitas bayangan watermark teks.
[0, 100]
Bawaan: 0 (tanpa bayangan).
rotate
Tidak
Menentukan sudut rotasi searah jarum jam untuk teks.
[0, 360]
Bawaan: 0 (tanpa rotasi).
Tabel berikut mencantumkan jenis font yang tersedia beserta nilai kodenya untuk parameter type.
Nilai parameter
Deskripsi
Nilai terkode
wqy-zenhei
WenQuanYi Zen Hei
d3F5LXplbmhlaQ
wqy-microhei
WenQuanYi Micro Hei
d3F5LW1pY3JvaGVp
fangzhengshusong
Fangzheng Shusong
ZmFuZ3poZW5nc2h1c29uZw
fangzhengkaiti
Fangzheng Kaiti
ZmFuZ3poZW5na2FpdGk
fangzhengheiti
Fangzheng Heiti
ZmFuZ3poZW5naGVpdGk
fangzhengfangsong
Fangzheng Fangsong
ZmFuZ3poZW5nZmFuZ3Nvbmc
droidsansfallback
DroidSansFallback
ZHJvaWRzYW5zZmFsbGJhY2s
-
Parameter watermark teks dan gambar
Parameter
Wajib
Deskripsi
Nilai
order
Tidak
Menentukan urutan tampilan watermark teks dan gambar.
0 atau 1
-
0 (bawaan): Watermark gambar berada di depan.
-
1: Watermark teks berada di depan.
align
Tidak
Menentukan penyelarasan watermark teks dan gambar.
0, 1, atau 2
-
0: Watermark disejajarkan di atas.
-
1: Watermark disejajarkan di tengah.
-
2 (bawaan): Watermark disejajarkan di bawah.
interval
Tidak
Menentukan jarak antara watermark teks dan gambar.
[0, 1000]
Bawaan: 0
Unit: piksel (px)
-
Pengkodean watermark
Untuk menambahkan watermark, Anda harus mengkodekan parameter seperti konten teks, font, dan nama gambar menggunakan pengkodean URL-safe Base64. Ikuti langkah-langkah berikut:
-
Kodekan konten sebagai Base64.
-
Ganti karakter-karakter berikut dalam string hasil:
-
Ganti setiap tanda plus (+) dengan tanda hubung (-).
-
Ganti setiap garis miring (/) dengan garis bawah (_).
-
Hapus semua tanda sama dengan (=) di akhir.
-
Gunakan penyandi base64url untuk mengkodekan parameter seperti konten teks, warna teks, font, dan nama gambar watermark.
Konten terkode ini hanya berlaku untuk parameter tertentu dalam operasi watermark. Jangan gunakan konten terkode ini dalam string signature (Signature).
Metode
Gambar publik
Anda dapat menambahkan watermark ke gambar dengan akses public-read atau public-read-write dengan menambahkan parameter Image Processing (IMG) langsung ke URL gambar.
Contoh 1: Tambahkan watermark teks
Contoh ini menggunakan gambar example.jpg dari bucket oss-console-img-demo-cn-hangzhou-3az di wilayah China (Hangzhou). URL untuk mengakses gambar tersebut adalah https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg.
Contoh berikut menunjukkan cara menambahkan watermark teks ke gambar example.jpg:
-
Tambahkan watermark teks "Hello World"
Kodekan teks "Hello World" dalam bentuk URL-safe Base64. Untuk informasi selengkapnya, lihat Kodekan parameter watermark. Hasil pengkodean adalah
SGVsbG8gV29ybGQ, dan URL untuk pemrosesan gambar adalah https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,text_SGVsbG8gV29ybGQ.
-
Tambahkan watermark teks dengan beberapa parameter pemrosesan gambar
Untuk menambahkan watermark teks "Hello World" ke gambar example.jpg, Anda dapat mengonfigurasi parameter pemrosesan berikut untuk gambar sumber maupun watermark:
-
Ubah ukuran example.jpg menjadi 300 × 300 piksel:
resize,w_300,h_300 -
Atur font ke WenQuanYi Zen Hei:
type_d3F5LXplbmhlaQ(d3F5LXplbmhlaQ adalah nilai terkode Base64 untuk WenQuanYi Zen Hei) -
Atur konten watermark menjadi "Hello World":
text_SGVsbG8gV29ybGQ -
Atur warna teks menjadi putih dan ukuran font menjadi 30 piksel:
color_FFFFFF,size_30 -
Atur transparansi bayangan teks menjadi 50%:
shadow_50 -
Atur posisi watermark ke pojok kanan bawah, dengan offset horizontal 10 piksel dan offset vertikal 10 piksel:
g_se,x_10,y_10
URL untuk pemrosesan gambar adalah: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_300,h_300/watermark,type_d3F5LXplbmhlaQ,size_30,text_SGVsbG8gV29ybGQ,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_10.

-
Contoh 2: Tambahkan watermark gambar
Contoh berikut menunjukkan cara menambahkan watermark gambar ke gambar example.jpg:
-
Tambahkan gambar panda.png sebagai watermark
Kodekan nama gambar watermark panda.png dalam bentuk URL-safe Base64. Hasil pengkodean adalah
cGFuZGEucG5n. URL untuk pemrosesan gambar adalah https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5n.Jalur lengkap gambar watermark harus dikodekan dalam bentuk URL-safe Base64 agar dapat ditransmisikan dengan benar dalam URL. Misalnya, jika gambar watermark bernama
panda.pngdan berada di direktoriimage, Anda harus melakukan pengkodean URL-safe Base64 pada jalur lengkapimage/panda.png. String terkode adalahaW1hZ2UvcGFuZGEucG5n.
-
Tambahkan watermark gambar dengan beberapa parameter pemrosesan gambar
Untuk menambahkan watermark gambar panda.png ke gambar example.jpg, Anda dapat mengonfigurasi parameter pemrosesan berikut untuk gambar sumber maupun watermark:
-
Ubah ukuran example.jpg menjadi 300 × 300 piksel:
resize,w_300,h_300 -
Atur kualitas example.jpg menjadi 90%:
quality,q_90 -
Tambahkan watermark gambar panda.png:
watermark,image_cGFuZGEucG5n(cGFuZGEucG5n adalah nilai terkode Base64 untuk panda.png) -
Atur transparansi watermark gambar menjadi 90%:
t_90 -
Atur posisi watermark gambar ke pojok kanan bawah, dengan offset horizontal 10 piksel dan offset vertikal 10 piksel:
g_se,x_10,y_10
-
-
Pra-proses watermark gambar dan konfigurasikan beberapa parameter pemrosesan gambar
Untuk menambahkan watermark gambar panda.png ke gambar example.jpg, Anda dapat mengonfigurasi parameter pemrosesan berikut untuk gambar sumber maupun watermark:
-
Ubah lebar example.jpg menjadi 300 piksel:
resize,w_300 -
Pra-proses gambar watermark panda.png dengan menskalanya menjadi 30% dari ukuran aslinya:
image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA(NilaicGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzAadalah string terkode Base64 untukpanda.png?x-oss-process=image/resize,P_30) -
Atur transparansi watermark menjadi 90%, posisinya ke pojok kanan bawah, serta offset horizontal dan vertikal masing-masing 10 piksel:
t_90,g_se,x_10,y_10
URL untuk pemrosesan gambar adalah: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_300/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,t_90,g_se,x_10,y_10.

-
-
Tambahkan beberapa watermark gambar
Pada contoh ini, dua watermark gambar, panda.png dan Tulips.jpg, ditambahkan ke example.jpg.
-
Kodekan nama gambar watermark panda.png dalam bentuk URL-safe Base64. Hasil pengkodean adalah
cGFuZGEucG5n. Parameter pemrosesan gambarnya adalahwatermark,image_cGFuZGEucG5n. -
Kodekan nama gambar watermark Tulips.jpg dalam bentuk URL-safe Base64. Hasil pengkodean adalah
VHVsaXBzLmpwZw. Untuk menempatkan watermark gambar di tengah kiri gambar sumber dengan offset horizontal dan vertikal masing-masing 10 piksel, parameter pemrosesan gambarnya adalahwatermark,image_VHVsaXBzLmpwZw,g_west,x_10,y_10.
URL untuk pemrosesan gambar adalah:
-
Contoh 3: Tambahkan watermark teks dan gambar
Contoh ini menunjukkan cara menambahkan watermark teks dan gambar ke gambar example.jpg:
Dengan menggabungkan nilai terkode untuk panda.png dan "Hello World" dari contoh sebelumnya, Anda dapat membuat URL berikut untuk pemrosesan gambar: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,text_SGVsbG8gV29ybGQ.
Gambar privat
Anda dapat menggunakan Alibaba Cloud SDK atau REST API untuk menambahkan watermark ke gambar privat.
Alibaba Cloud SDKs
Bagian berikut menyediakan contoh kode untuk menambahkan watermark menggunakan Alibaba Cloud SDK umum. Untuk contoh kode dalam bahasa lain, lihat Ikhtisar.
Java
Diperlukan Alibaba Cloud SDK for Java versi 3.17.4 atau lebih baru.
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 {
// Tentukan endpoint. Pada contoh ini, digunakan endpoint wilayah China (Hangzhou). Sesuaikan dengan endpoint aktual Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan wilayah tempat bucket Anda berada, misalnya cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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. Jalur lengkap tidak boleh mengandung nama bucket.
String objectName = "src.jpg";
// Tentukan jalur tujuan file lokal, misalnya D:\\localpath\\example-new.jpg. File akan dibuat atau ditimpa.
String pathName = "D:\\dest.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya saat instance OSSClient tidak lagi diperlukan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Tambahkan watermark teks "Hello World" ke gambar.
String image = "image/watermark,text_SGVsbG8gV29ybGQ";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(image);
// Simpan gambar yang telah diproses ke mesin lokal Anda sebagai example-new.jpg.
// Jika Anda hanya menentukan nama file (misalnya, example-new.jpg) tanpa jalur lengkap, file akan disimpan ke direktori lokal proyek.
ossClient.getObject(request, new File("D:\\dest.jpg"));
} catch (OSSException oe) {
System.out.println("Terjadi OSSException, artinya permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons error karena suatu alasan.");
System.out.println("Pesan Error:" + oe.getErrorMessage());
System.out.println("Kode Error:" + oe.getErrorCode());
System.out.println("ID Permintaan:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Terjadi ClientException, artinya klien mengalami "
+ "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
+ "misalnya tidak dapat mengakses jaringan.");
System.out.println("Pesan Error:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}
PHP
Diperlukan Alibaba Cloud SDK for PHP versi 2.7.0 atau lebih baru.
<?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, 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 ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan jalur lengkap objek, misalnya exampledir/exampleobject.jpg. Jalur lengkap tidak boleh mengandung nama bucket.
$object = "src.jpg";
// Tentukan jalur tujuan file lokal, misalnya D:\\localpath\\example-new.jpg. File akan dibuat atau ditimpa.
// Jika Anda hanya menentukan nama file (misalnya, example-new.jpg) tanpa jalur lengkap, file akan disimpan ke direktori lokal proyek.
$download_file = "D:\\dest.jpg";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah general-purpose.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Tambahkan watermark teks "Hello World" ke gambar.
$image = "image/watermark,text_SGVsbG8gV29ybGQ";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $image);
// Simpan gambar yang telah diproses ke mesin lokal Anda.
$ossClient->getObject($bucket, $object, $options);
Python
Diperlukan Alibaba Cloud SDK for Python versi 2.18.4 atau lebih baru.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah general-purpose.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Tentukan nama gambar sumber. Jika gambar tidak berada di direktori root bucket, Anda harus menentukan jalur lengkapnya, misalnya exampledir/example.jpg.
key = 'src.jpg'
# Tentukan nama untuk gambar yang telah diproses.
new_pic = 'D:\\dest.jpg'
# Tambahkan watermark teks "Hello World" ke gambar.
image = 'image/watermark,text_SGVsbG8gV29ybGQ'
bucket.get_object_to_file(key, new_pic, process=image)
Go
Diperlukan Alibaba Cloud SDK for Go versi 3.0.2 atau lebih baru.
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 menjalankan kode contoh, 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 bucket Anda. Pada contoh ini, digunakan endpoint wilayah China (Hangzhou). Sesuaikan dengan endpoint aktual Anda.
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 sumber. Jika gambar tidak berada di direktori root bucket, Anda harus menentukan jalur lengkapnya, misalnya exampledir/example.jpg.
sourceImageName := "src.jpg"
// Tentukan nama untuk gambar yang telah diproses.
targetImageName := "D://dest.jpg"
// Tambahkan watermark teks "Hello World" ke gambar.
image := "image/watermark,text_SGVsbG8gV29ybGQ"
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
if err != nil {
HandleError(err)
}
}
REST API
Untuk aplikasi yang sangat kustom, Anda dapat memanggil REST API secara langsung. Hal ini mengharuskan Anda menghitung signature secara manual dalam kode Anda. Untuk informasi selengkapnya, lihat Signature V4 (Direkomendasikan).
Anda dapat memberi watermark pada gambar dengan menambahkan parameter watermark ke operasi GetObject.
GET /oss.jpg?x-oss-process=image/watermark,w_100 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
FAQ
Menggunakan gambar daring atau lokal sebagai watermark
Saat menggunakan IMG untuk menambahkan watermark gambar, gambar watermark harus berada di bucket yang sama dengan gambar sumber. Untuk menggunakan gambar daring atau lokal sebagai watermark, Anda harus mengunggahnya terlebih dahulu ke bucket gambar sumber.
Error "Font content is too large"
Saat menambahkan watermark teks dengan IMG, teks dibatasi hingga 64 karakter. Setiap karakter Tionghoa dihitung sebagai tiga karakter. Jika Anda menerima error "font content is too large", perpendek teks tersebut dan coba lagi. Untuk informasi selengkapnya, lihat Contoh 1: Tambahkan watermark teks.
Kegagalan watermark gambar pada objek privat
Mengakses objek privat memerlukan URL dengan signature. Anda tidak dapat menambahkan parameter IMG langsung ke URL bertanda tangan ini. Sebagai gantinya, untuk memproses objek privat, Anda harus menyertakan parameter IMG saat menghasilkan signature. Untuk informasi selengkapnya, lihat Hasilkan URL objek bertanda tangan yang menyertakan parameter IMG.
Warna latar belakang untuk watermark gambar
No.
Mengakses gambar dengan URL bertanda tangan
Mengakses objek privat memerlukan URL dengan signature. Anda tidak dapat menambahkan parameter IMG langsung ke URL bertanda tangan ini. Sebagai gantinya, untuk memproses objek privat, Anda harus menyertakan parameter IMG saat menghasilkan signature. Untuk informasi selengkapnya, lihat Image Processing (Java SDK V1).
Mengatur watermark secara vertikal
Ya. Untuk mengatur watermark secara vertikal, Anda dapat menggunakan beberapa aksi watermark.

Mengubah ukuran watermark secara dinamis
IMG tidak mendukung pengubahan ukuran watermark secara dinamis. Sebagai gantinya, Anda harus menerapkan logika kustom di sisi klien atau server untuk mendeteksi dimensi gambar sumber dan menghitung ukuran watermark sebelum memanggil API OSS.
Jumlah maksimum watermark
Anda dapat menambahkan hingga tiga watermark. Untuk menambahkan lebih banyak, ajukan tiket .

