Anda dapat menambahkan watermark ke gambar yang disimpan di Object Storage Service (OSS) untuk mencegah replikasi dan penggunaan data tanpa izin.
Skenario
Perlindungan hak cipta: Untuk mencegah replikasi atau penggunaan gambar tanpa izin, Anda dapat menambahkan watermark untuk mengidentifikasi hak cipta.
Promosi merek: Perusahaan dan individu dapat meningkatkan visibilitas merek dengan menambahkan watermark berupa logo atau nama mereka pada gambar, video, dan dokumen.
Pencegahan pemalsuan: Menambahkan watermark pada dokumen resmi, sertifikat, dan laporan dapat meningkatkan kesulitan pemalsuan serta mengurangi risiko pemalsuan dokumen.
Pencegahan plagiarisme gambar: Gambar dapat dengan mudah diunduh dan diterbitkan ulang oleh pengguna internet. Anda dapat menambahkan watermark ke gambar untuk menunjukkan bahwa gambar tersebut dilindungi hak cipta.
Kepatuhan hukum: Dalam situasi tertentu, menambahkan watermark diperlukan untuk memenuhi persyaratan kepatuhan hukum saat menerbitkan ketentuan hukum atau kontrak tertentu.
Catatan penggunaan
Anda dapat menggunakan URL objek, SDK OSS, atau operasi API untuk mengonfigurasi parameter IMG yang digunakan untuk memproses gambar. Dalam contoh ini, URL objek digunakan. Anda dapat menggunakan URL objek untuk mengonfigurasi parameter IMG hanya untuk gambar bersifat publik-baca. Jika ingin mengonfigurasi parameter IMG untuk gambar pribadi, gunakan SDK OSS atau operasi API. Untuk informasi lebih lanjut, lihat Mode Implementasi IMG.
Hanya gambar yang disimpan di bucket saat ini yang dapat digunakan sebagai watermark. Untuk menggunakan gambar online atau lokal sebagai watermark, unggah terlebih dahulu gambar tersebut ke bucket saat ini.
Hanya gambar JPG, PNG, BMP, WebP, dan TIFF yang dapat digunakan sebagai watermark.
Anda dapat menambahkan hingga tiga watermark gambar berbeda ke satu gambar. Watermark gambar tidak boleh sepenuhnya menutupi watermark gambar lainnya.
Karakter Tiongkok tradisional tidak dapat digunakan sebagai watermark teks.
Parameter
Aksi: watermark
Tabel berikut menjelaskan parameter yang dapat dikonfigurasi saat menambahkan watermark ke gambar.
Parameter Dasar
Parameter
Diperlukan
Deskripsi
Nilai
t
Tidak
Opasitas dari watermark.
[0,100]
Nilai default: 100. Nilai 100 menentukan bahwa watermark tidak transparan.
g
Tidak
Posisi watermark pada gambar. Nilai default: se. Nilai valid:
nw: kiri atas
north: tengah atas
ne: kanan atas
west: tengah kiri
center: tengah
east: tengah kanan
sw: kiri bawah
south: tengah bawah
se: kanan bawah
Untuk posisi tepat yang ditunjukkan oleh setiap nilai, lihat gambar referensi posisi berikut.
x
Tidak
Offset horizontal, yang menentukan jarak horizontal antara watermark dan tepi gambar. Parameter ini berlaku hanya jika watermark diposisikan di kiri atas, tengah kiri, kiri bawah, kanan atas, tengah kanan, atau kanan bawah gambar.
[0,4096]
Nilai default: 10.
Satuan: piksel.
y
Tidak
Offset vertikal, yang menentukan jarak vertikal antara watermark dan tepi gambar. Parameter ini berlaku hanya jika watermark diposisikan di kiri atas, tengah atas, kanan atas, kiri bawah, tengah bawah, atau kanan bawah gambar.
[0,4096]
Nilai default: 10.
Satuan: piksel.
voffset
Tidak
Offset vertikal dari garis tengah. Saat watermark diposisikan di tengah kiri, tengah, atau tengah kanan gambar, Anda dapat menentukan offset vertikal watermark di sepanjang garis tengah.
[-1000,1000]
Nilai default: 0.
Satuan: piksel.
fill
Tidak
Menentukan apakah akan mengubin watermark gambar atau watermark teks di seluruh gambar.
CatatanJika Anda ingin menambahkan watermark ubin, ajukan aplikasi di Quota Center di panel navigasi sisi kiri konsol OSS dan ajukan aplikasi untuk penambahan watermark ubin.
1: mengubin watermark di seluruh gambar.
0: tidak mengubin watermark di seluruh gambar. Ini adalah nilai default.
padx
Tidak
Jarak horizontal antara watermark saat watermark diubin di seluruh gambar. Parameter ini valid hanya jika Anda mengatur fill ke 1.
[0,4096]
Nilai default: 0.
Satuan: piksel.
pady
Tidak
Jarak vertikal antara watermark saat watermark diubin di seluruh gambar. Parameter ini valid hanya jika Anda mengatur fill ke 1.
[0,4096]
Nilai default: 0.
Satuan: piksel.
Gunakan parameter x, y, dan voffset untuk menyesuaikan posisi watermark pada gambar. Parameter ini juga dapat digunakan untuk menyesuaikan tata letak watermark saat menambahkan beberapa watermark ke gambar.
Gambar berikut menunjukkan posisi watermark berdasarkan koordinat.

Parameter Watermark Gambar
Parameter
Diperlukan
Deskripsi
Nilai
image
Ya
Nama lengkap objek gambar yang ingin Anda gunakan sebagai watermark. Nama objek harus dikodekan Base64. Untuk informasi lebih lanjut, lihat Kodekan parameter terkait watermark. Perhatikan bahwa jalur lengkap objek watermark gambar harus berupa string Base64 yang aman untuk URL. Misalnya, jika gambar watermark
panda.pngberada di direktoriimage, Anda harus menggunakan pengkodean Base64 untuk mengonversi jalur lengkapimage/panda.pngmenjadi string aman URL, yaituaW1hZ2UvcGFuZGEucG5n.CatatanHanya objek di bucket saat ini yang dapat digunakan sebagai watermark.
String yang dikodekan Base64.
Parameter Pra-pemrosesan Gambar Watermark
Anda dapat memproses gambar watermark menggunakan pengubahan ukuran gambar, pemotongan kustom, irisan indeks, persegi panjang bulat, dan rotasi gambar. Selain itu, Anda dapat menyertakan parameter P untuk mengubah ukuran gambar watermark.
Parameter
Deskripsi
Nilai
P
Persentase ukuran watermark gambar relatif terhadap ukuran gambar asli. Misalnya, Anda mengatur parameter ini ke 10. Jika dimensi gambar watermark adalah 100 × 100 piksel, ukuran akhir watermark gambar adalah 10 × 10 piksel. Jika dimensi gambar watermark adalah 200 × 200 piksel, ukuran akhir watermark gambar adalah 20 × 20 piksel.
[1,100]
Parameter Watermark Teks
Parameter
Diperlukan
Deskripsi
Nilai
text
Ya
Isi dari watermark teks. Isi teks harus dikodekan Base64. Untuk informasi lebih lanjut, lihat Kodekan parameter terkait watermark.
String Cina sebelum pengkodean Base64 tidak boleh melebihi 64 karakter dalam panjang.
type
Tidak
Jenis font dari watermark teks. Nama font harus dikodekan Base64.
Untuk informasi lebih lanjut tentang jenis font yang didukung dan hasil pengkodean font, lihat Jenis font dan hasil pengkodean.
Nilai default: wqy-zenhei (hasil pengkodean: d3F5LXplbmhlaQ).
color
Tidak
Warna teks. Nilai valid untuk parameter ini adalah nilai warna RGB.
Nilai warna RGB. Misalnya, nilai 000000 menentukan hitam, dan nilai FFFFFF menentukan putih.
Nilai default: 000000.
size
Tidak
Ukuran teks.
(0,1000]
Nilai default: 40.
Satuan: piksel.
shadow
Tidak
Opasitas bayangan untuk watermark teks.
[0,100]
Nilai default: 0. Nilai 0 menentukan bahwa tidak ada bayangan yang ditambahkan ke teks.
rotate
Tidak
Derajat rotasi teks searah jarum jam.
[0,360]
Nilai default: 0. Nilai 0 menentukan bahwa teks tidak dirotasi.
Tabel berikut menjelaskan nilai valid dari parameter type dan hasil pengkodeannya.
Nilai
Deskripsi
Hasil pengkodean
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
Diperlukan
Deskripsi
Nilai
order
Tidak
Urutan watermark teks dan watermark gambar.
0 dan 1.
0 (default): Watermark gambar berada di atas watermark teks.
1: Watermark teks berada di atas watermark gambar.
align
Tidak
Perataan watermark teks dan watermark gambar.
0, 1, dan 2.
0: Perataan atas diterapkan pada watermark teks dan watermark gambar.
1: Perataan tengah diterapkan pada watermark teks dan watermark gambar.
2 (default): Perataan bawah diterapkan pada watermark teks dan watermark gambar.
interval
Tidak
Jarak antara watermark teks dan watermark gambar.
[0,1000]
Nilai default: 0.
Satuan: piksel.
Kodekan parameter terkait watermark
Saat menambahkan watermark, gunakan pengkodean Base64 untuk mengonversi parameter terkait watermark, seperti teks, font teks, dan nama gambar watermark, menjadi string aman URL. Langkah-langkah yang perlu dilakukan adalah sebagai berikut:
Kodekan parameter terkait watermark dalam Base64.
Ganti karakter berikut dalam hasil pengkodean:
Ganti tanda tambah (+) dengan tanda hubung (-).
Ganti garis miring (/) dengan garis bawah (_).
Hilangkan semua tanda sama dengan (=) di akhir konten yang dikodekan Base64.
Kami merekomendasikan penggunaan base64url encoder untuk mengkodekan parameter terkait watermark.
Hanya parameter tertentu dalam operasi watermark yang mengambil nilai yang telah dikodekan. Jangan mengkodekan string tanda tangan.
Metode
Tambahkan watermark ke gambar bersifat publik-baca atau publik-baca-tulis
Anda dapat menambahkan parameter pemrosesan gambar (IMG) ke URL gambar bersifat publik-baca atau publik-baca-tulis untuk menambahkan watermark ke gambar.
Contoh 1: Tambahkan watermark teks
Berikut adalah contoh penambahan watermark teks ke gambar bernama example.jpg di bucket oss-console-img-demo-cn-hangzhou-3az di wilayah China (Hangzhou). Gambar tersebut di-hosting di URL berikut: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg.
Contoh berikut menunjukkan cara menambahkan watermark teks ke example.jpg:
Tambahkan string "Hello World" ke gambar sebagai watermark teks
Kodekan string "Hello World" dalam Base64 dan konversikan hasil pengkodean menjadi string aman URL (SGVsbG8gV29ybGQ). Untuk informasi lebih lanjut, lihat Kodekan Parameter Terkait Watermark.
URL yang digunakan untuk memproses gambar adalah https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,text_SGVsbG8gV29ybGQ.
Konfigurasikan beberapa parameter IMG saat menambahkan watermark teks ke gambar
Dalam contoh ini, parameter IMG dikonfigurasi untuk melakukan operasi berikut pada gambar dan menambahkan watermark teks "Hello World":
Ubah ukuran gambar example.jpg menjadi 300 × 300 piksel menggunakan
resize,w_300,h_300.Atur font teks watermark menjadi WenQuanYi Zen Hei menggunakan
type_d3F5LXplbmhlaQ. Dalam pengaturan ini, d3F5LXplbmhlaQ adalah hasil pengkodean WenQuanYi Zen Hei dalam Base64.Tambahkan string "Hello World" ke gambar sebagai watermark teks menggunakan
text_SGVsbG8gV29ybGQ.Atur warna teks watermark menjadi putih dan ukuran teks menjadi 30 piksel menggunakan
color_FFFFFF,size_30.Atur opasitas bayangan teks watermark menjadi 50% menggunakan
shadow_50.Atur posisi teks watermark ke kanan bawah, offset horizontal menjadi 10 piksel, dan offset vertikal dari garis tengah menjadi 10 piksel menggunakan
g_se,x_10,y_10.
URL berikut digunakan untuk memproses gambar berdasarkan parameter sebelumnya: 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 bernama panda.png sebagai watermark gambar
Kodekan nama gambar panda.png menjadi string aman URL (
cGFuZGEucG5n). URL yang digunakan untuk memproses gambar adalah https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5n.Perhatikan bahwa jalur lengkap objek watermark gambar harus berupa string Base64 yang aman URL. Misalnya, jika gambar watermark
panda.pngberada di direktoriimage, Anda harus menggunakan pengkodean Base64 untuk mengonversi jalur lengkapimage/panda.pngmenjadi string aman URL, yaituaW1hZ2UvcGFuZGEucG5n.
Proses gambar example.jpg dan gambar watermark
Dalam contoh ini, parameter IMG dikonfigurasi untuk melakukan operasi berikut pada gambar example.jpg dan menambahkan gambar panda.png ke gambar example.jpg sebagai watermark:
Ubah ukuran gambar example.jpg menjadi 300 × 300 piksel menggunakan
resize,w_300,h_300.Atur kualitas gambar example.jpg menjadi 90% menggunakan
quality,q_90.Tambahkan gambar panda.png ke gambar example.jpg sebagai watermark menggunakan
watermark,image_cGFuZGEucG5n. cGFuZGEucG5n adalah hasil pengkodean panda.png dalam Base64.Atur opasitas watermark menjadi 90% menggunakan
t_90.Atur posisi watermark ke kanan bawah, offset horizontal menjadi 10 piksel, dan offset vertikal dari garis tengah menjadi 10 piksel menggunakan
g_se,x_10,y_10.
URL berikut digunakan untuk memproses gambar berdasarkan parameter sebelumnya: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_300,h_300/quality,q_90/watermark,image_cGFuZGEucG5n,t_90,g_se,x_10,y_10.

Praproses watermark gambar, lalu konfigurasikan parameter IMG.
Dalam contoh ini, panda.png dan Tulips.jpg ditambahkan ke example.jpg sebagai watermark gambar.
Ubah lebar gambar example.jpg menjadi 300 piksel menggunakan
resize,w_300.Ubah ukuran watermark gambar panda.png menjadi 30% dari ukuran aslinya dengan menggunakan
image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA. (cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzAmerupakan hasil pengkodean Base64 daripanda.png?x-oss-process=image/resize,P_30.)Atur opasitas watermark gambar menjadi 90%, posisi watermark di kanan bawah, offset horizontal 10 piksel, dan offset vertikal dari tengah 10 piksel menggunakan
t_90,g_se,x_10,y_10.
URL berikut digunakan untuk memproses gambar berdasarkan parameter sebelumnya: 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
Dalam contoh ini, panda.png dan Tulips.jpg ditambahkan ke example.jpg sebagai watermark gambar.
Enkode nama gambar panda.png ke dalam string aman-URL berbasis Base64 (
cGFuZGEucG5n). Tambahkan gambar panda.png sebagai watermark menggunakanwatermark,image_cGFuZGEucG5n.Enkode nama gambar Tulips.jpg ke dalam string aman-URL berbasis Base64 (
VHVsaXBzLmpwZw). Atur posisi watermark gambar ke tengah kiri, offset horizontal ke 10 piksel, dan offset vertikal dari garis tengah ke 10 piksel menggunakanwatermark,image_VHVsaXBzLmpwZw,g_west,x_10,y_10.
URL berikut digunakan untuk memproses gambar berdasarkan parameter yang telah disebutkan:
Contoh 3: Menambahkan watermark teks dan gambar
Contoh berikut menunjukkan cara menambahkan watermark teks dan gambar ke gambar example.jpg:
Untuk menambahkan gambar panda.png dan teks "Hello World" sebagai watermark ke gambar example.jpg, Anda dapat menggunakan URL berikut: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,text_SGVsbG8gV29ybGQ.
Tambahkan watermark ke gambar pribadi
Anda dapat menggunakan SDK OSS dan operasi API untuk menambahkan watermark ke gambar pribadi.
Gunakan SDK OSS
Kode contoh berikut menambahkan watermark ke gambar pribadi menggunakan SDK OSS untuk bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara menambahkan watermark ke gambar pribadi menggunakan bahasa pemrograman lainnya, lihat Ikhtisar.
Java
Diperlukan OSS SDK for Java V3.17.4 atau yang 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 wilayah. Dalam contoh ini, endpoint wilayah Tiongkok (Hangzhou) digunakan. Tentukan endpoint sebenarnya Anda.
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 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 yang ingin Anda proses. Jangan sertakan nama bucket dalam jalur lengkap.
String objectName = "src.jpg";
// Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.jpg. Jika file dengan nama yang sama sudah ada di jalur tersebut, gambar yang diproses akan menimpa file tersebut. Jika tidak, gambar yang diproses akan disimpan di jalur tersebut.
String pathName = "D:\\dest.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
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 diproses sebagai example-new.jpg ke perangkat lokal Anda.
// Jika Anda hanya menentukan nama file lokal seperti example-new.jpg tanpa menentukan jalur lokal file, gambar yang 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 mencapai OSS, "
+ "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
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
Diperlukan OSS SDK for PHP V2.7.0 atau yang 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 Tiongkok (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. Contoh: exampledir/exampleobject.jpg. Jangan sertakan nama bucket dalam jalur lengkap.
$object = "src.jpg";
// Tentukan jalur lengkap tempat Anda ingin menyimpan gambar yang diproses. Contoh: D:\\localpath\\example-new.jpg. Jika file dengan nama yang sama sudah ada di jalur tersebut, gambar yang diproses akan menimpa file tersebut. Jika tidak, gambar yang diproses akan disimpan di jalur tersebut.
// Jika Anda hanya menentukan nama file lokal seperti example-new.jpg tanpa menentukan jalur lokal file, gambar yang 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);
// 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 diproses ke perangkat lokal Anda.
$ossClient->getObject($bucket, $object, $options); Python
Diperlukan OSS SDK for Python V2.18.4 atau yang 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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
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 akan diproses. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: example/example.jpg.
key = 'src.jpg'
# Tentukan nama gambar yang 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 OSS SDK for Go V3.0.2 atau yang 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 wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
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 yang akan diberi watermark disimpan. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// Tentukan nama gambar yang akan diberi watermark. Jika gambar tidak disimpan di direktori root bucket, Anda harus menentukan jalur lengkap gambar. Contoh: example/example.jpg.
sourceImageName := "src.jpg"
// Tentukan nama gambar yang 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)
}
}Gunakan RESTful API
Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil API RESTful OSS. Untuk memanggil operasi API secara langsung, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat Versi Tanda Tangan 4 (Disarankan).
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=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218eFAQ
Bagaimana cara menggunakan gambar online atau lokal sebagai watermark?
Ketika IMG digunakan untuk menambahkan watermark gambar ke sebuah gambar, pastikan bahwa gambar watermark dan gambar yang akan diberi watermark disimpan dalam bucket yang sama. Untuk menambahkan gambar online atau lokal sebagai watermark, unggah terlebih dahulu gambar tersebut ke bucket yang berisi gambar yang akan diberi watermark.
Bagaimana cara menyelesaikan pesan "konten font terlalu besar" yang muncul saat saya menambahkan watermark teks?
Ketika Anda menambahkan watermark teks ke gambar menggunakan parameter IMG OSS, panjang maksimum yang diizinkan untuk watermark teks adalah 64 karakter Inggris, dengan setiap karakter Cina dihitung sebagai tiga karakter Inggris. Ketika pesan "konten font terlalu besar" muncul, kami sarankan Anda mempersingkat watermark teks. Untuk informasi lebih lanjut, lihat Contoh 1: Menambahkan Watermark Teks.
Apa yang dapat saya lakukan jika gagal menambahkan watermark gambar ke objek pribadi?
URL objek pribadi harus ditandatangani. Parameter IMG tidak dapat langsung ditambahkan ke akhir URL yang telah ditandatangani. Jika Anda ingin memproses objek pribadi, tambahkan parameter IMG ke tanda tangan. Untuk informasi lebih lanjut, lihat Hasilkan URL Objek Bertanda Tangan yang Mencakup Parameter IMG.
Bisakah saya mengonfigurasi warna latar belakang untuk watermark gambar saat saya menambahkan watermark gambar?
Tidak, Anda tidak dapat mengonfigurasi warna latar belakang untuk watermark gambar.
Bagaimana cara menggunakan URL bertanda tangan untuk mengakses gambar?
URL objek pribadi harus ditandatangani. Parameter IMG tidak dapat langsung ditambahkan ke akhir URL yang telah ditandatangani. Jika Anda ingin memproses objek pribadi, tambahkan parameter IMG ke tanda tangan. Untuk informasi lebih lanjut, lihat IMG.
Apakah OSS mendukung pengaturan watermark secara vertikal?
Ya, OSS mendukung pengaturan watermark secara vertikal. Jika Anda ingin mengatur watermark secara vertikal, Anda dapat membagi operasi watermark menjadi beberapa tindakan watermark dan menggunakan beberapa tindakan watermark untuk mengimplementasikan pengaturan watermark vertikal.
Sebagai contoh, Anda dapat menggunakan https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,text_SGVsbG8gV29ybGQ/watermark,text_SGVsbG8gV29ybGQy,y_60.

Apakah OSS mendukung penyesuaian ukuran watermark secara dinamis berdasarkan ukuran gambar yang akan diberi watermark?
Tidak, OSS tidak mendukung penyesuaian ukuran watermark secara dinamis berdasarkan ukuran gambar yang akan diberi watermark. Anda dapat menulis logika sendiri untuk mendeteksi ukuran gambar dan menyesuaikan ukuran watermark teks sesuai dengan itu. Anda perlu mengimplementasikan logika ini di sisi klien atau server Anda sebelum memanggil operasi OSS untuk menambahkan watermark.
Berapa banyak watermark yang dapat saya tambahkan ke gambar pada saat yang bersamaan?
Anda dapat menambahkan hingga tiga watermark ke gambar pada saat yang bersamaan. Jika Anda ingin menambahkan lebih dari tiga watermark ke gambar pada saat yang bersamaan, submit a ticket.
