Object Storage Service (OSS) に保存されているイメージに透かしを追加して、不正なデータの複製と使用を防ぐことができます。
シナリオ
著作権保護:イメージの不正な複製や使用を防ぐために、著作権を識別する透かしを入れることができます。
ブランドプロモーション:企業や個人は、ロゴや名前の入った透かしをイメージ、ビデオ、ドキュメントに追加することで、ブランドの認知度を高めることができます。
改ざん防止:公式文書、証明書、レポートに透かしを追加することで、改ざんの難易度を高め、文書偽造のリスクを軽減できます。
画像盗作防止:インターネットユーザーは画像を簡単にダウンロードして再公開できます。 画像に透かしを追加して、著作権で保護されていることを示すことができます。
法令遵守:特定の法的または契約条件を公開する場合、法令遵守の要件を満たすために透かしを追加する必要がある場合があります。
使用上の注意
オブジェクト URL、OSS SDK、または API 操作を使用して、イメージの処理に使用する IMG パラメーターを設定できます。 この例では、オブジェクト URL を使用します。 オブジェクト URL を使用して IMG パラメーターを設定できるのは、パブリックリードイメージの場合のみです。 プライベートイメージの IMG パラメーターを設定する場合は、OSS SDK または API 操作を使用します。 詳細については、「IMG 実装モード」をご参照ください。
現在のバケットに保存されているイメージのみを透かしとして使用できます。 オンラインまたはローカルイメージを透かしとして使用するには、まずイメージを現在のバケットにアップロードする必要があります。
JPG、PNG、BMP、WebP、TIFF イメージのみを透かしとして使用できます。
1 つのイメージに最大 3 つの異なるイメージ透かしを追加できます。 イメージ透かしを別のイメージ透かしと完全に重ねることはできません。
繁体字中国語はテキスト透かしとして使用できません。
パラメーター
操作: watermark
次の表は、イメージに透かしを追加するときに設定できるパラメーターを示しています。
基本パラメーター
パラメーター
必須
説明
値
t
いいえ
透かしの不透明度。
[0,100]
デフォルト値: 100。値 100 は、透かしが不透明であることを指定します。
g
いいえ
イメージ上の透かしの位置。 デフォルト値: se。有効な値:
nw: 左上
north: 中央上
ne: 右上
west: 中央左
center: 中央
east: 中央右
sw: 左下
south: 中央下
se: 右下
各値が示す正確な位置については、次の参照位置図を参照してください。
x
いいえ
水平オフセット。透かしとイメージの端との水平方向の距離を指定します。 このパラメーターは、透かしがイメージの左上、左中央、左下、右上、右中央、または右下に配置されている場合にのみ有効になります。
[0,4096]
デフォルト値: 10。
単位: ピクセル。
y
いいえ
垂直オフセット。透かしとイメージの端との垂直方向の距離を指定します。 このパラメーターは、透かしがイメージの左上、中央上、右上、左下、中央下、または右下に配置されている場合にのみ有効になります。
[0,4096]
デフォルト値: 10。
単位: ピクセル。
voffset
いいえ
中央線からの垂直オフセット。 透かしがイメージの左中央、中央、または右中央に配置されている場合、中央線に沿って透かしの垂直オフセットを指定できます。
[-1000,1000]
デフォルト値: 0。
単位: ピクセル。
fill
いいえ
イメージ透かしまたはテキスト透かしをイメージ全体にタイル状に配置するかどうかを指定します。
説明タイル状の透かしを追加する場合は、クォータセンター で申請書を提出してください。
1: 透かしをイメージ全体にタイル状に配置します。
0: 透かしをイメージ全体にタイル状に配置しません。 これはデフォルト値です。
padx
いいえ
透かしがイメージ全体にタイル状に配置されている場合の透かし間の水平方向の間隔。 このパラメーターは、fill を 1 に設定した場合にのみ有効です。
[0,4096]
デフォルト値: 0。
単位: ピクセル。
pady
いいえ
透かしがイメージ全体にタイル状に配置されている場合の透かし間の垂直方向の間隔。 このパラメーターは、fill を 1 に設定した場合にのみ有効です。
[0,4096]
デフォルト値: 0。
単位: ピクセル。
パラメーター x、y、voffset を使用して、イメージ上の透かしの位置を調整できます。 また、これらのパラメーターを使用して、イメージに複数の透かしを追加するときに透かしのレイアウトを調整することもできます。
次の図は、座標に基づく透かしの位置を示しています。

イメージ透かしパラメーター
パラメーター
必須
説明
値
image
はい
透かしとして使用したいイメージオブジェクトの完全な名前。 オブジェクト名は Base64 エンコードされている必要があります。 詳細については、「透かし関連のパラメーターをエンコードする」をご参照ください。 イメージ透かしオブジェクトのフルパスは、URL セーフな Base64 エンコード文字列である必要があります。 たとえば、透かしイメージ
panda.pngがimageディレクトリにある場合、Base64 エンコーディングを使用してフルパスimage/panda.pngを URL セーフな文字列aW1hZ2UvcGFuZGEucG5nに変換する必要があります。説明現在のバケット内のオブジェクトのみを透かしとして使用できます。
Base64 エンコード文字列。
透かしイメージの前処理パラメーター
イメージのサイズ変更、カスタムトリミング、インデックススライス、角丸長方形、イメージの回転 操作を使用して、透かしイメージを前処理できます。 さらに、P パラメーターを含めて、透かしイメージのサイズを変更できます。
パラメーター
説明
値
P
元のイメージサイズに対するイメージ透かしのサイズの割合。 たとえば、このパラメーターを 10 に設定します。 透かしイメージの寸法が 100 × 100 ピクセルの場合、最終的なイメージ透かしのサイズは 10 × 10 ピクセルになります。 透かしイメージの寸法が 200 × 200 ピクセルの場合、最終的なイメージ透かしのサイズは 20 × 20 ピクセルになります。
[1,100]
テキスト透かしパラメーター
パラメーター
必須
説明
値
text
はい
テキスト透かしの内容。 テキストコンテンツは Base64 エンコードされている必要があります。 詳細については、「透かし関連のパラメーターをエンコードする」をご参照ください。
Base64 エンコード前の中国語文字列は、長さが 64 文字を超えることはできません。
type
いいえ
テキスト透かしのフォント。 フォント名は Base64 エンコードされている必要があります。
サポートされているフォントとフォントのエンコード結果の詳細については、「フォントタイプとエンコード結果」をご参照ください。
デフォルト値: wqy-zenhei (エンコード結果: d3F5LXplbmhlaQ)。
color
いいえ
テキストの色。 このパラメーターの有効な値は RGB カラー値です。
RGB カラー値。 たとえば、値 000000 は黒を指定し、値 FFFFFF は白を指定します。
デフォルト値: 000000。
size
いいえ
テキストのサイズ。
(0,1000]
デフォルト値: 40。
単位: ピクセル。
shadow
いいえ
テキスト透かしの影の不透明度。
[0,100]
デフォルト値: 0。値 0 は、テキストに影が追加されないことを指定します。
rotate
いいえ
テキストを時計回りに回転させる角度。
[0,360]
デフォルト値: 0。値 0 は、テキストが回転しないことを指定します。
次の表は、type パラメーターの有効な値とこれらの値のエンコード結果を示しています。
値
説明
エンコード結果
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
テキストとイメージの透かしパラメーター
パラメーター
必須
説明
値
order
いいえ
テキスト透かしとイメージ透かしの順序。
0 と 1。
0 (デフォルト): イメージ透かしがテキスト透かしの上にあります。
1: テキスト透かしがイメージ透かしの上にあります。
align
いいえ
テキスト透かしとイメージ透かしの配置。
0、1、2。
0: 上揃えがテキスト透かしとイメージ透かしに適用されます。
1: 中央揃えがテキスト透かしとイメージ透かしに適用されます。
2 (デフォルト): 下揃えがテキスト透かしとイメージ透かしに適用されます。
interval
いいえ
テキスト透かしとイメージ透かしの間隔。
[0,1000]
デフォルト値: 0。
単位: ピクセル。
透かし関連のパラメーターをエンコードする
透かしを追加する場合は、Base64 エンコーディングを使用して、テキスト、テキストのフォント、透かしイメージの名前などの透かし関連のパラメーターを URL セーフな文字列に変換する必要があります。 エンコードを完了するには、次の手順を実行する必要があります。
透かし関連のパラメーターを Base64 でエンコードします。
エンコード結果の次の文字を置き換えます。
プラス記号 (+) をハイフン (-) に置き換えます。
スラッシュ (/) をアンダースコア (_) に置き換えます。
Base64 エンコードされたコンテンツの末尾にあるすべての等号 (=) を省略します。
base64url エンコーダー を使用して、透かし関連のパラメーターをエンコードすることをお勧めします。
透かし操作の特定のパラメーターのみがエンコードされた値を取ります。 署名文字列はエンコードしないでください。
メソッド
パブリックリードまたはパブリックリードライトイメージに透かしを追加する
パブリックリードまたはパブリックリードライトイメージの URL に画像処理 (IMG) パラメーターを追加して、イメージに透かしを追加できます。
例 1: テキスト透かしを追加する
このセクションでは、中国 (杭州) リージョンの oss-console-img-demo-cn-hangzhou-3az バケットにある example.jpg という名前のイメージにテキスト透かしを追加する例を示します。 イメージは次の URL でホストされています: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg.
次の例は、example.jpg にテキスト透かしを追加する方法を示しています。
文字列「Hello World」をテキスト透かしとしてイメージに追加する
文字列「Hello World」を Base64 エンコードし、エンコードされた結果を URL セーフな文字列 (SGVsbG8gV29ybGQ) に変換します。 詳細については、「透かし関連のパラメーターをエンコードする」をご参照ください。
イメージの処理に使用される URL は https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,text_SGVsbG8gV29ybGQ です。
イメージにテキスト透かしを追加するときに複数の IMG パラメーターを設定する
この例では、IMG パラメーターはイメージで次の操作を実行し、「Hello World」というテキスト透かしを追加するように設定されています。
example.jpg イメージのサイズを
resize,w_300,h_300を使用して 300 × 300 ピクセルに変更します。透かしテキストのフォントを
type_d3F5LXplbmhlaQを使用して WenQuanYi Zen Hei に設定します。 設定では、d3F5LXplbmhlaQ は WenQuanYi Zen Hei を Base64 でエンコードした結果です。text_SGVsbG8gV29ybGQを使用して、文字列「Hello World」をテキスト透かしとしてイメージに追加します。透かしテキストの色を白に、テキストのサイズを 30 ピクセルに設定するには、
color_FFFFFF,size_30を使用します。透かしテキストの影の不透明度を 50% に設定するには、
shadow_50を使用します。テキスト透かしの位置を右下、水平オフセットを 10 ピクセル、中央線からの垂直オフセットを 10 ピクセルに設定するには、
g_se,x_10,y_10を使用します。
上記のIMGパラメータに基づいて画像を処理するために使用されるURLは次のとおりです。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.

例 2: イメージ透かしを追加する
次の例は、example.jpg イメージにイメージ透かしを追加する方法を示しています。
panda.png という名前のイメージをイメージ透かしとして追加する
panda.png イメージの名前を Base64 エンコードして、URL セーフな文字列 (
cGFuZGEucG5n) にします。 イメージの処理に使用される URL は https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5n です。イメージ透かしオブジェクトのフルパスは、URL セーフな Base64 エンコード文字列である必要があります。 たとえば、透かしイメージ
panda.pngがimageディレクトリにある場合、Base64 エンコーディングを使用してフルパスimage/panda.pngを URL セーフな文字列aW1hZ2UvcGFuZGEucG5nに変換する必要があります。
example.jpg イメージと透かしイメージを処理する
この例では、IMG パラメーターは example.jpg イメージで次の操作を実行し、panda.png イメージを透かしとして example.jpg イメージに追加するように設定されています。
resize,w_300,h_300を使用して、example.jpg イメージのサイズを 300 × 300 ピクセルに変更します。quality,q_90を使用して、example.jpg イメージの品質を 90% に設定します。watermark,image_cGFuZGEucG5nを使用して、panda.png イメージを透かしとして example.jpg イメージに追加します。 cGFuZGEucG5n は panda.png を Base64 でエンコードした結果です。t_90を使用して、透かしの不透明度を 90% に設定します。g_se,x_10,y_10を使用して、透かしの位置を右下、水平オフセットを 10 ピクセル、中央線からの垂直オフセットを 10 ピクセルに設定します。
イメージ透かしを前処理してから IMG パラメーターを設定する
この例では、IMG パラメーターは example.jpg イメージで次の操作を実行し、panda.png イメージを透かしとして example.jpg イメージに追加するように設定されています。
イメージ example.jpg の幅を
resize,w_300を使用して 300 ピクセルに変更します。イメージ透かし panda.png のサイズを元のサイズの 30% に変更するには、
image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzAを使用します (cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzAはpanda.png?x-oss-process=image/resize,P_30の Base64 エンコード結果です)。イメージ透かしの不透明度を 90%、イメージ透かしの位置を右下、水平オフセットを 10 ピクセル、中央線からの垂直オフセットを 10 ピクセルに設定するには、
t_90,g_se,x_10,y_10を使用します。
上記のIMGパラメータに基づいて画像を処理するために使用されるURLは次のとおりです。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.

複数のイメージ透かしを追加する
この例では、panda.png と Tulips.jpg がイメージ透かしとして example.jpg に追加されます。
panda.png イメージの名前を Base64 エンコードして、URL セーフな文字列 (
cGFuZGEucG5n) にします。watermark,image_cGFuZGEucG5nを使用して、panda.png イメージを透かしとして追加します。Tulips.jpg イメージの名前を Base64 エンコードして、URL セーフな文字列 (
VHVsaXBzLmpwZw) にします。watermark,image_VHVsaXBzLmpwZw,g_west,x_10,y_10を使用して、イメージ透かしの位置を左中央、水平オフセットを 10 ピクセル、中央線からの垂直オフセットを 10 ピクセルに設定します。
上記のIMGパラメータに基づいて画像を処理するために使用されるURLは次のとおりです。
例 3: テキストとイメージの両方の透かしを追加する
次の例は、example.jpg イメージにテキストとイメージの透かしを追加する方法を示しています。
panda.png イメージと「Hello World」テキストを透かしとして example.jpg イメージに追加するには、次の URL を使用できます: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA,text_SGVsbG8gV29ybGQ.
プライベートイメージに透かしを追加する
OSS SDK と API 操作を使用して、プライベートイメージに透かしを追加できます。
OSS SDK を使用する
次のサンプルコードは、一般的なプログラミング言語用の OSS SDK を使用して、プライベートイメージに透かしを追加します。 他のプログラミング言語を使用してプライベートイメージに透かしを追加する方法の詳細については、「概要」をご参照ください。
Java
OSS SDK for Java V3.17.4 以降が必要です。
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 {
// リージョンのエンドポイントを指定します。 この例では、中国 (杭州) リージョンのエンドポイントが使用されています。 実際のエンドポイントを指定してください。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットが配置されているリージョンを指定します。 例: cn-hangzhou。
String region = "cn-hangzhou";
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket。
String bucketName = "examplebucket";
// 処理するオブジェクトのフルパスを指定します。 フルパスにバケット名を含めないでください。
String objectName = "src.jpg";
// 処理済みイメージを保存するフルパスを指定します。 例: D:\\localpath\\example-new.jpg。 パスに同じ名前のファイルが既に存在する場合、処理済みイメージはファイルを上書きします。 それ以外の場合、処理済みイメージはパスに保存されます。
String pathName = "D:\\dest.jpg";
// OSSClient インスタンスを作成します。
// OSSClient が不要になったら、shutdown メソッドを呼び出してリソースを解放します。
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// イメージに「Hello World」というテキスト透かしを追加します。
String image = "image/watermark,text_SGVsbG8gV29ybGQ";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(image);
// 処理済みイメージを example-new.jpg としてローカルデバイスに保存します。
// ファイルのローカルパスを指定せずに example-new.jpg などのローカルファイルの名前のみを指定すると、処理済みイメージはサンプルプログラムが属するプロジェクトのローカルパスに保存されます。
ossClient.getObject(request, new File("D:\\dest.jpg"));
} catch (OSSException oe) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "but was rejected with an error response for some reason.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException ce) {
System.out.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.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}PHP
OSS SDK for PHP V2.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\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットの名前を指定します。 例: examplebucket。
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.jpg。 フルパスにバケット名を含めないでください。
$object = "src.jpg";
// 処理済みイメージを保存するフルパスを指定します。 例: D:\\localpath\\example-new.jpg。 パスに同じ名前のファイルが既に存在する場合、処理済みイメージはファイルを上書きします。 それ以外の場合、処理済みイメージはパスに保存されます。
// ファイルのローカルパスを指定せずに example-new.jpg などのローカルファイルの名前のみを指定すると、処理済みイメージはサンプルプログラムが属するプロジェクトのローカルパスに保存されます。
$download_file = "D:\\dest.jpg";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// バケットが配置されているAlibaba CloudリージョンのIDを指定します。
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// イメージに「Hello World」というテキスト透かしを追加します。
$image = "image/watermark,text_SGVsbG8gV29ybGQ";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $image);
// 処理済みイメージをローカルデバイスに保存します。
$ossClient->getObject($bucket, $object, $options); Python
OSS SDK for Python V2.18.4 以降が必要です。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth= oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# バケットが配置されているAlibaba CloudリージョンのIDを指定します。
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# 処理するイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: example/example.jpg。
key = 'src.jpg'
# 処理済みイメージの名前を指定します。
new_pic = 'D:\\dest.jpg'
# イメージに「Hello World」というテキスト透かしを追加します。
image = 'image/watermark,text_SGVsbG8gV29ybGQ'
bucket.get_object_to_file(key, new_pic, process=image)Go
OSS SDK for Go V3.0.2 以降が必要です。
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() {
// 環境変数からアクセス認証情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// OSSClient インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを 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)
}
// 透かしを入れるイメージが保存されているバケットの名前を指定します。 例: examplebucket。
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// 透かしを入れるイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: example/example.jpg。
sourceImageName := "src.jpg"
// 処理済みイメージの名前を指定します。
targetImageName := "D://dest.jpg"
// イメージに「Hello World」というテキスト透かしを追加します。
image := "image/watermark,text_SGVsbG8gV29ybGQ"
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
if err != nil {
HandleError(err)
}
}RESTful API を使用する
ビジネスで高度なカスタマイズが必要な場合は、OSS RESTful API を直接呼び出すことができます。 API 操作を直接呼び出すには、コードに署名計算を含める必要があります。 詳細については、「署名バージョン 4 (推奨)」をご参照ください。
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よくある質問
オンラインまたはローカルイメージを透かしとして使用するにはどうすればよいですか?
IMG を使用してイメージにイメージ透かしを追加する場合は、透かしイメージと透かしを入れるイメージが同じバケットに保存されていることを確認してください。 オンラインまたはローカルイメージを透かしとして追加するには、まずイメージを透かしを入れるイメージを含むバケットにアップロードする必要があります。
テキスト透かしを追加するときに表示される「フォントコンテンツが大きすぎます」というメッセージを解決するにはどうすればよいですか?
OSS IMG パラメーターを使用してイメージにテキスト透かしを追加する場合、テキスト透かしの最大許容長は 64 文字の英数字で、各中国語文字は 3 文字の英数字としてカウントされます。 「フォントコンテンツが大きすぎます」というメッセージが表示された場合は、テキスト透かしを短くすることをお勧めします。 詳細については、「例 1: テキスト透かしを追加する」をご参照ください。
プライベートオブジェクトにイメージ透かしを追加できない場合はどうすればよいですか?
プライベートオブジェクトの URL は署名されている必要があります。 IMG パラメーターを署名付き URL の末尾に直接追加することはできません。 プライベートオブジェクトを処理する場合は、IMG パラメーターを署名に追加します。 詳細については、「IMG パラメーターを含む署名付きオブジェクト URL を生成する」をご参照ください。
イメージ透かしを追加するときに、イメージ透かしの背景色を設定できますか?
いいえ、イメージ透かしの背景色を設定することはできません。
署名付き URL を使用してイメージにアクセスするにはどうすればよいですか?
プライベートオブジェクトの URL は署名されている必要があります。 IMG パラメーターを署名付き URL の末尾に直接追加することはできません。 プライベートオブジェクトを処理する場合は、IMG パラメーターを署名に追加します。 詳細については、「IMG」をご参照ください。
OSS は透かしの垂直方向の配置をサポートしていますか?
はい、OSS は透かしの垂直方向の配置をサポートしています。 透かしを垂直に配置する場合は、透かし操作を複数の透かし操作に分割し、複数の透かし操作を使用して垂直透かし配置を実装できます。

OSS は、透かしを入れるイメージのサイズに基づいた動的な透かしサイズ設定をサポートしていますか?
いいえ、OSS は、透かしを入れるイメージのサイズに基づいた動的な透かしサイズ設定をサポートしていません。 画像サイズを検出し、それに応じてテキスト透かしのサイズを調整するロジックを記述できます。 透かしを追加する OSS 操作を呼び出す前に、クライアント側またはサーバー側でこのロジックを実装する必要があります。
イメージに同時にいくつの透かしを追加できますか?
イメージには同時に最大 3 つの透かしを追加できます。 イメージに同時に 3 つを超える透かしを追加する場合は、チケットを送信してください。

