全部產品
Search
文件中心

Object Storage Service:圖片盲浮水印

更新時間:Jan 10, 2026

對於儲存在Bucket中的圖片,您可以使用圖片盲浮水印功能, 支援為圖片添加文字盲浮水印和解析盲浮水印。

功能簡介

通過圖片盲浮水印技術,您可以在不影響原圖視覺效果的前提下,向圖片中嵌入不可見的文字資訊。如需擷取浮水印內容,可使用解析盲浮水印介面擷取。即使圖片經過一定程度的攻擊(裁剪、縮放、塗鴉、換色等),仍可以正確解析浮水印內容。

應用情境

  • 鑒權追責:判斷己方的圖片是否被惡意攻擊者盜取。

  • 上傳查重:判斷使用者上傳的圖片是否來自已存在的資產庫。

  • 資源防泄漏:通過流傳的資源圖片中嵌入的盲浮水印得到泄漏方的相關資訊。

如何使用

  • 添加盲浮水印:採用同步處理(x-oss-process)方式,添加盲浮水印後會另存新檔一張新圖片。

  • 解析盲浮水印:採用非同步處理(x-oss-async-process)方式,解析出的文字浮水印會包含在非同步訊息中。

前提條件

添加盲浮水印

操作名稱:image/blindwatermark

浮水印編碼步驟

  1. 將內容編碼成Base64。

  2. 將結果中的部分編碼替換。

    • 將結果中的加號(+)替換成短劃線(-)。

    • 將結果中的正斜線(/)替換成底線(_)。

    • 將結果中尾部的所有等號(=)省略。

Java

要求使用3.17.4及以上版本的Java SDK。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GenericResult;
import com.aliyun.oss.model.ProcessObjectRequest;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Formatter;

public class Demo {
    public static void main(String[] args) throws IOException {
        // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 填寫Endpoint對應的Region資訊,例如cn-hangzhou。
        String region = "cn-hangzhou";
        // 強烈建議不要把訪問憑證儲存到工程代碼裡,否則可能導致訪問憑證泄露,威脅您帳號下所有資源的安全。
        // 本程式碼範例以從環境變數中擷取訪問憑證為例。運行本程式碼範例之前,請先配置環境變數。
        EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // 填寫Bucket名稱,例如examplebucket。
        String bucketName = "examplebucket";

        // 指定原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如sourceDir/source.jpg
        String sourceImage = "sourceDir/source.jpg";

        // 建立OSSClient執行個體。
        // 當OSSClient執行個體不再使用時,調用shutdown方法以釋放資源。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        // 顯式聲明使用 V4 簽名演算法
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            StringBuilder sbStyle = new StringBuilder();
            Formatter styleFormatter = new Formatter(sbStyle);

            // 指定浮水印內容
            String content = "阿里雲著作權";
            // 添加盲浮水印
            // 修複:使用URL安全的Base64編碼,並去掉填充
            String encodedContentStr = java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(content.getBytes(StandardCharsets.UTF_8));
            String styleType = "image/blindwatermark,content_" + encodedContentStr;

            // 指定處理後圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如targetDir/target.jpg。
            String targetImage = "targetDir/target.jpg";
            // 修複:對targetImage和bucketName也使用URL安全的Base64編碼,並去掉填充
            styleFormatter.format("%s|sys/saveas,o_%s,b_%s",
                    styleType,
                    java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(targetImage.getBytes(StandardCharsets.UTF_8)),
                    java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(bucketName.getBytes(StandardCharsets.UTF_8)));

            System.out.println(sbStyle.toString());
            ProcessObjectRequest request = new ProcessObjectRequest(bucketName, sourceImage, sbStyle.toString());
            GenericResult processResult = ossClient.processObject(request);

            BufferedReader reader = new BufferedReader(new InputStreamReader(processResult.getResponse().getContent(), StandardCharsets.UTF_8));
            StringBuilder responseContent = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                responseContent.append(line).append("\n");
            }

            reader.close();
            processResult.getResponse().getContent().close();
            System.out.println(responseContent.toString());
        } catch (OSSException oe) {
            System.err.println("Caught an OSSException, which means your request made it to OSS, but was rejected with an error response for some reason.");
            System.err.println("Error Message:" + oe.getErrorMessage());
            System.err.println("Error Code:" + oe.getErrorCode());
            System.err.println("Request ID:" + oe.getRequestId());
            System.err.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.err.println("Caught an ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, such as not being able to access the network.");
            System.err.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

要求使用Python SDK 2.18.4及以上版本。

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

# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# 指定原圖所在的Bucket名稱。
source_bucket_name = 'source_bucket_name'
# 指定用於存放處理後圖片的Bucket名稱,該Bucket需與原圖所在Bucket在同一地區。
taget_bucket_name = 'taget_bucket_name'
# 指定原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如sourceDir/source.jpg。
source_image_name = 'sourceDir/source.jpg'

# 指定Bucket執行個體,所有檔案相關的方法都需要通過Bucket執行個體來調用。
bucket = oss2.Bucket(auth, endpoint, source_bucket_name)

# 指定浮水印內容
content = '阿里雲著作權'

# 添加盲浮水印
style = "image/blindwatermark,content_{0}".format(oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(content))))

# 指定處理後圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如targetDir/target.jpg。
target_image_name = 'targetDir/target.jpg'
process = "{0}|sys/saveas,o_{1},b_{2}".format(style,
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(target_image_name))),
    oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(taget_bucket_name))))
result = bucket.process_object(source_image_name, process)
print(result)

Go

要求使用Go SDK 3.0.2及以上版本。

package main

import (
	"encoding/base64"
	"fmt"
	"os"
	"strings"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 建立OSSClient執行個體。
	// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
	client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 指定原圖所在Bucket的名稱。
	bucketName := "srcbucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		handleError(err)
		return
	}

	// 指定原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如sourceDir/source.jpg。
	sourceImageName := "sourceDir/source.jpg"

	// 指定用於存放處理後圖片的Bucket名稱,該Bucket需與原圖所在Bucket在同一地區。
	targetBucketName := "destbucket"

	// 指定處理後圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如targetDir/target.jpg。
	targetImageName := "targetDir/target.jpg"

	// 指定浮水印內容
	content := "阿里雲著作權"

	// 產生圖片盲浮水印 - 根據文檔要求,需要去除尾部的等號
	encodedContent := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(content)), "=")
	style := fmt.Sprintf("image/blindwatermark,content_%s", encodedContent)
	// 對靶心圖表片名稱和Bucket名稱也需要去除尾部等號
	encodedImageName := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(targetImageName)), "=")
	encodedBucketName := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(targetBucketName)), "=")
	process := fmt.Sprintf("%s|sys/saveas,o_%s,b_%s", style, encodedImageName, encodedBucketName)

	result, err := bucket.ProcessObject(sourceImageName, process)
	if err != nil {
		handleError(err)
	} else {
		fmt.Println(result)
	}
}

func handleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

PHP

要求使用PHP SDK 2.7.0及以上版本。

<?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\OssClient;
use OSS\Core\OssException;

// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");

// yourEndpoint填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

// 填寫Bucket名稱,例如examplebucket。
$bucket = "examplebucket";

// 指定原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如sourceDir/source.jpg。
$object = "sourceDir/source.jpg";

// 指定處理後圖片名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如targetDir/target.jpg。
$save_object = "targetDir/target.jpg";

function base64url_encode($data)
{
    return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}

try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint, false);

    // 如果靶心圖表片不在指定Bucket中,需上傳圖片到目標Bucket。
    // $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");

    $content = "阿里雲著作權";
    // 圖片盲浮水印
    $encodedContent = base64url_encode($content);
    $style = "image/blindwatermark,content_$encodedContent";

    $process = $style .
               '|sys/saveas,' .
               'o_' . base64url_encode($save_object) .
               ',b_' . base64url_encode($bucket);

    // 將處理後的圖片命名稱為example-new.png並儲存到當前Bucket。
    $result = $ossClient->processObject($bucket, $object, $process);
    // 列印處理結果。
    print_r($result);
} catch (OssException $e) {
    echo "Error: " . $e->getMessage();
}
?>

其他語言使用方法請參見另存新檔

解析盲浮水印

操作名稱:image/deblindwatermark

Java

要求使用3.17.4及以上版本的Java SDK。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AsyncProcessObjectRequest;
import com.aliyun.oss.model.AsyncProcessObjectResult;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Demo {
    public static void main(String[] args) throws IOException {
        // Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // 填寫Endpoint對應的Region資訊,例如cn-hangzhou。
        String region = "cn-hangzhou";
        // 強烈建議不要把訪問憑證儲存到工程代碼裡,否則可能導致訪問憑證泄露,威脅您帳號下所有資源的安全。
        // 本程式碼範例以從環境變數中擷取訪問憑證為例。運行本程式碼範例之前,請先配置環境變數。
        EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();

        // 填寫Bucket名稱,例如examplebucket。
        String bucketName = "target_bucket_name";

        // 指定原圖名稱。如果圖片不在Bucket根目錄,需攜帶檔案完整訪問路徑,例如sourceDir/source.jpg
        String sourceKey = "targetDir/target.jpg";

        // MNS訊息的主題
        String topic = "imm-blindwatermark-test";

        // 建立OSSClient執行個體。
        // 當OSSClient執行個體不再使用時,調用shutdown方法以釋放資源。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        // 顯式聲明使用 V4 簽名演算法
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // 提取指定圖片中的浮水印內容
            String style = "image/deblindwatermark,s_low,t_text";
            String encodedTopic = Base64.getUrlEncoder().withoutPadding().encodeToString(topic.getBytes(StandardCharsets.UTF_8));
            String process = String.format("%s|sys/notify,topic_%s", style, encodedTopic);

            AsyncProcessObjectRequest request = new AsyncProcessObjectRequest(bucketName, sourceKey, process);
            
            // 調用非同步流ApsaraVideo for Media Processing介面
            AsyncProcessObjectResult result = ossClient.asyncProcessObject(request);
            System.out.println(result.getRequestId());
            // 擷取並列印TaskId,用於追蹤幕後處理任務
            System.out.println(result.getTaskId());
            

        } catch (OSSException oe) {
            System.err.println("Caught an OSSException, which means your request made it to OSS, but was rejected with an error response for some reason.");
            System.err.println("Error Message:" + oe.getErrorMessage());
            System.err.println("Error Code:" + oe.getErrorCode());
            System.err.println("Request ID:" + oe.getRequestId());
            System.err.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.err.println("Caught an ClientException, which means the client encountered a serious internal problem while trying to communicate with OSS, such as not being able to access the network.");
            System.err.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

要求使用Python SDK 2.18.4及以上版本。

# -*- coding: utf-8 -*-
import base64
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 填寫Bucket所在地區對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 指定Bucket名稱。
bucket_name = 'taget_bucket_name'
# 指定浮水印圖檔案名稱。
source_key = 'targetDir/target.jpg'
# 指定MNS訊息的topic。
topic = 'imm-blindwatermark-test'

# 指定Bucket執行個體,所有檔案相關的方法都需要通過Bucket執行個體來調用。
bucket = oss2.Bucket(auth, endpoint, bucket_name)

# 提取指定圖片中的浮水印內容。
style = 'image/deblindwatermark,s_low,t_text'
process = "{0}|sys/notify,topic_{1}".format(style,
oss2.compat.to_string(base64.urlsafe_b64encode(oss2.compat.to_bytes(topic))).replace('=', ''))

# 調用非同步流ApsaraVideo for Media Processing介面。
result = bucket.async_process_object(source_key, process)
# OSS API請求的唯一識別碼,用於追蹤和排查問題
print(result.request_id)
# 任務的唯一識別碼,用於追蹤幕後處理任務
print(result.task_id)

Go

要求使用Go SDK 3.0.2及以上版本。

package main

import (
    "encoding/base64"
    "fmt"
    "os"
    "strings"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 建立OSSClient執行個體。
    endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    client, err := oss.New(endpoint, "", "", oss.SetCredentialsProvider(provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 指定Bucket名稱。
    bucketName := "target_bucket_name" 
    bucket, err := client.Bucket(bucketName)
    if err != nil {
        handleError(err)
        return
    }

    // 指定浮水印圖檔案名稱。
    sourceKey := "targetDir/target.jpg"

    // 指定MNS訊息的topic。
    topic := "imm-blindwatermark-test"

    // 提取指定圖片中的浮水印內容。
    style := "image/deblindwatermark,s_low,t_text"
    encodedTopic := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(topic)), "=")
    process := fmt.Sprintf("%s|sys/notify,topic_%s", style, encodedTopic)

    // 調用非同步流ApsaraVideo for Media Processing介面。
    result, err := bucket.AsyncProcessObject(sourceKey, process)
    if err != nil {
        handleError(err)
    } else {
        fmt.Println(result.RequestID) // OSS API請求的唯一識別碼
        fmt.Println(result.TaskId) //任務的唯一識別碼,用於追蹤幕後處理任務
    }
}

func handleError(err error) {
    fmt.Fprintf(os.Stderr, "Error: %v\n", err)
    os.Exit(-1)
}

PHP

要求使用PHP SDK 2.7.0及以上版本。

if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");

// Endpoint以華東1(杭州)為例,其它Region請按實際情況填寫。
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';

// 指定Bucket名稱。
$bucketName = 'taget_bucket_name'; // 

// 指定浮水印圖檔案名稱。
$sourceKey = 'targetDir/target.jpg';

function base64_url_encode($input) {
    return strtr(base64_encode($input), '+/', '-_');
}

try {
    // 建立OSSClient執行個體。
    $client = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

    // 指定MNS訊息的topic。
    $topic = 'imm-blindwatermark-test';

    // 提取指定圖片中的浮水印內容。
    $style = 'image/deblindwatermark,s_low,t_text';
    $encodedTopic = str_replace('=', '', base64_url_encode($topic));
    $process = sprintf('%s|sys/notify,topic_%s', $style, $encodedTopic);

    // 調用非同步流ApsaraVideo for Media Processing介面。
    $result = $client->asyncProcessObject($bucketName, $sourceKey, $process);
    
    // 解析返回的JSON字串
    $decodedResult = json_decode($result, true);
    
    echo "Request ID: " . $decodedResult['RequestId'] . "\n"; // OSS API請求的唯一識別碼
    echo "TaskId: " . $decodedResult['TaskId'] . "\n"; // 任務的唯一識別碼,用於追蹤幕後處理任務

} catch (OssException $e) {
    echo "Error: " . $e->getMessage() . "\n";
}
?>

其他語言使用方法請參見非同步處理

參數說明

添加盲浮水印

操作名稱:image/blindwatermark

參數

是否必須

描述

取值範圍

content

文字浮水印的Base64編碼。填寫的浮水印名稱需經過URL安全的Base64編碼。您可以使用浮水印編碼工具進行編碼處理。例如名稱為阿里雲著作權,填寫時為6Zi_6YeM5LqR54mI5p2D5omA5pyJ

Base64編碼之前浮水印字串的最大長度限制為256個字元。

s

浮水印添加強度。強度越高,添加浮水印後的映像抵抗攻擊效能越強,但引起的失真越明顯。

  • low(預設值):低強度。

  • medium:中等強度。

  • high:高強度。

q

攜帶浮水印資訊的輸出圖片的儲存品質。品質越高,圖片尺寸越大,浮水印解析品質越高。

說明

僅輸入圖片格式為jpg時生效。

預設值為90,取值範圍為70~100。

添加圖片盲浮水印時也會用到sys/saveas參數。更多資訊,請參見另存新檔

解析盲浮水印

操作名稱:image/deblindwatermark

參數

是否必須

描述

取值範圍

s

浮水印提取等級,等級增大,耗時越長,提取效果越好。

  • low(預設值):低等級。

  • medium:中等級。

  • high:高等級。

t

嵌入的浮水印類型。

text:文字。

解析盲浮水印時也會用到notify參數。更多資訊,請參見訊息通知

相關API

如果您的程式自訂要求較高,您可以直接發起REST API請求。直接發起REST API請求需要手動編寫代碼計算簽名。關於公用要求標頭Authorization的計算方法請參見簽名版本4(推薦)。添加盲浮水印和解析盲浮水印均為POST請求,相關參數需要放在請求body

添加盲浮水印

您可以通過在PostObject介面中添加x-oss-process參數的方式來處理圖片。更多資訊請參見PostObject

處理樣本

POST /example.jpg?x-oss-process   HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue

// 浮水印內容為“阿里雲著作權”,浮水印強度為low,輸出圖片品質為90,添加浮水印後的圖片儲存為oss://image-demo/outobjprefix.jpg
x-oss-process=image/blindwatermark,content_6Zi_6YeM5LqR54mI5p2D5omA5pyJ,s_low,q_90|sys/saveas,b_aW1hZ2UtZGVtbw,o_b3V0b2JqcHJlZml4LmpwZw

解析盲浮水印

您可以通過在PostObject介面中添加圖片縮放參數的方式來處理圖片。更多資訊請參見PostObject

處理樣本

POST /outobjprefix.jpg?x-oss-async-process HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 28 Oct 2022 06:40:10 GMT
Authorization: SignatureValue

// 解析上一步中添加的浮水印,訊息topic為doc-images。
x-oss-async-process=image/deblindwatermark|sys/notify,topic_ZG9jLWltYWdlcw

注意事項

  • 圖片盲浮水印功能僅支援JPG、PNG、BMP、WebP、TIFF格式的圖片。

  • 圖片的長寬最小為 80px,最大為 10000px。

  • 圖片的短邊與長邊的比例應大於1:2。

  • 圖片盲浮水印功能不支援純黑、純白圖片,以及解析度過低(<200px * 200px,非嚴格參數)的圖片。

  • 僅支援為圖片添加文字浮水印。

  • 不支援匿名訪問。