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
選択可能
画像上の透かしの位置。
nw: 左上。
北: アッパーミドル。
ne: 右上。
西: 左中央。
センター: センター。
東: 右真ん中。
sw: 左下。
南: 下の真ん中。
se (デフォルト): 右下。
各値で指定される正確な位置については、次の図を参照してください。
x
選択可能
ウォーターマークと画像エッジの間の水平距離を指定する水平マージン。 このパラメーターは、ウォーターマークが画像の左上、中左、左下、右上、中右、または右下にある場合にのみ有効になります。
[0,4096]
デフォルト値は 10 です。
単位: ピクセル
y
選択可能
垂直マージン。透かしと画像エッジの間の垂直距離を指定します。 このパラメーターは、ウォーターマークが画像の左上、中央上部、右上、左下、中央下部、または右下にある場合にのみ有効になります。
[0,4096]
デフォルト値は 10 です。
単位: ピクセル
voffset
選択可能
中央線からの垂直オフセット。 ウォーターマークが画像の中央左、中央、または中央右にある場合、中央の線に沿ってウォーターマークの垂直方向のオフセットを指定できます。
[-1000,1000]
デフォルト値:0
単位: ピクセル
fill
選択可能
画像全体に透かしまたはテキスト透かしをタイル表示するかどうかを指定します。
説明タイル透かしを追加する場合は、Quota Centerでアプリケーションを送信し、 を選択します。
1: 画像全体に画像透かしまたはテキスト透かしを並べます。
0: 画像全体に画像透かしまたはテキスト透かしをタイル化しません。 デフォルト値です。
padx
選択可能
画像透かしまたはテキスト透かしが画像にわたってタイル化されるときの透かし間の水平間隔。 このパラメーターは、fillを1に設定した場合にのみ有効です。
[0,4096]
デフォルト値:0
単位: ピクセル
パディ
選択可能
画像透かしまたはテキスト透かしが画像にわたってタイル化されるときの透かし間の垂直間隔。 このパラメーターは、fillを1に設定した場合にのみ有効です。
[0,4096]
デフォルト値:0
単位: ピクセル
パラメータx、y、およびvoffsetを使用して、画像上の透かしの位置を調整できます。 これらのパラメーターを使用して、画像に複数の透かしが含まれている場合に透かしレイアウトを調整することもできます。
次の図は、座標に基づく透かしの位置を示しています。
イメージ透かしパラメーター
パラメーター
必須
説明
有効値
イメージ
必須
透かしとして使用するイメージオブジェクトの完全な名前。 オブジェクト名をBase64-encodedする必要があります。 詳細については、「透かし関連パラメーターのエンコード」をご参照ください。
たとえば、バケットのimageディレクトリにあるpanda.pngという名前の画像を透かしとして使用する場合は、image/panda.pngをエンコードする必要があります。 エンコード結果は
aW1hZ2UvcGFuZGEucG5n
です。説明現在のバケット内のオブジェクトのみを透かしとして使用できます。
Base64-encoded文字列。
透かし画像前処理のパラメータ
画像のサイズ変更、カスタムトリミング、インデックス付きスライス、角丸長方形、画像の回転操作でパラメーターを使用して、透かし画像を前処理できます。 透かしイメージを前処理するときに、Pパラメーターを含めて透かしイメージのサイズを変更できます。
パラメーター
説明
有効値
P
ソース画像に対する透かし画像のサイズの割合。 たとえば、100 × 100ピクセルのソースイメージでこのパラメーターを10に設定すると、透かしイメージのサイズは10 × 10ピクセルになります。 ソース画像のサイズが200 × 200ピクセルである場合、透かし画像のサイズは20 × 20ピクセルである。
[1,100]
テキスト透かしパラメータ
パラメーター
必須
説明
有効値
テキスト
必須
テキスト透かしの内容。 テキストコンテンツをBase64-encodedする必要があります。 詳細については、「透かし関連パラメーターのエンコード」をご参照ください。
Base64-encoding前の中国語文字列の長さは64文字を超えることはできません。
タイプ
選択可能
テキストの透かしのフォント。 フォント名をBase64-encodedする必要があります。
サポートされているフォントとフォントのエンコード結果の詳細については、「フォントの種類とエンコード結果」をご参照ください。
デフォルト値: wqy-zenhei (エンコード結果: d3F5LXplbmhlaQ) 。
カラー
選択可能
テキストの透かしの色。 このパラメータの有効な値はRGBカラー値です。
例えば、000000は黒を指定し、FFFFFFは白を指定する。
デフォルト値: 000000
サイズ
選択可能
テキスト透かしのサイズ。
(0,1000)
デフォルト値: 40。
単位: ピクセル
影
選択可能
テキスト透かしの影の不透明度。
[0,100]
デフォルト値:0 値0は、テキストに影が追加されないことを指定します。
回転させる
選択可能
テキストが時計回りに回転する程度。
[0,360]
デフォルト値:0 値0は、テキストが回転されないことを指定します。
次の表に、typeパラメーターの有効な値と、これらの値のエンコード結果を示します。
値
説明
エンコード結果
wqy-zenhei
WenQuanYi Zen Hei
d3F5LXplbmhlaQ
wqy-microhei
WenQuanYiマイクロヘイ
d3F5LW1pY3JvaGVp
fangzhengshusong
Fangzheng Shusong
ZmFuZ3poZW5nc2h1c29uZw
fangzhengkaiti
Fangzheng Kaiti
ZmFuZ3poZW5na2FpdGk
fangzhengheiti
Fangzheng Heiti
ZmFuZ3poZW5naGVpdGk
fangzhengfangsong
Fangzheng Fangsong
ZmFuZ3poZW5nZmFuZ3Nvbmc
droidsansfallback
フォールバックフォント Droid Sans
ZHJvaWRzYW5zZmFsbGJhY2s
テキストとイメージの透かしパラメータ
パラメーター
必須
説明
有効値
注文
選択可能
テキスト透かしと画像透かしの順序。
0と1。
0 (デフォルト): 画像の透かしはテキストの透かしの上にあります。
1: テキストの透かしは画像の透かしの上にあります。
align
選択可能
テキスト透かしと画像透かしの配置。
0、1、および2。
0: テキスト透かしと画像透かしにトップアライメントを適用します。
1: テキスト透かしと画像透かしに中心配置が適用されます。
2 (デフォルト): テキスト透かしと画像透かしに下の位置合わせが適用されます。
interval
選択可能
テキスト透かしと画像透かしの間隔。
[0,1000]
デフォルト値:0
単位: ピクセル
透かし関連パラメータのエンコード
透かしを追加するときは、Base64を使用して、テキスト透かしのテキストやフォント、透かし画像の名前などの透かし関連のパラメーターをURLセーフ文字列にエンコードする必要があります。 エンコードには2つの手順が必要です。
Base64を使用して透かし関連のパラメータをエンコードします。
エンコード結果の次の文字を置き換えます。
エンコード結果のプラス記号 (+) をハイフン (-) に置き換えます。
エンコード結果のスラッシュ (/) をアンダースコア (_) に置き換えます。
エンコード結果の最後に等号 (=) を省略します。
透かし関連のパラメーターをエンコードするには、base64url encoderを使用することを推奨します。
エンコード結果は、透かし操作の特定のパラメーターでのみ使用できます。 エンコード結果を署名文字列で使用しないでください。
方法
パブリック読み取りイメージまたはパブリック読み取り /書き込みイメージに透かしを追加
イメージ処理 (IMG) パラメーターをパブリック読み取りまたはパブリック読み取り書き込みイメージのURLに追加して、イメージに透かしを追加できます。
例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" をURLセーフ文字列にBase64-encodeします。 詳細については、「透かし関連パラメーターのエンコード」をご参照ください。 エンコード結果は
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" に対して次の操作を実行するように設定されています。
Resize, w_300,h_300
を使用して、ソースイメージexample.jpgのサイズを300 × 300ピクセルに変更します。type_d3F5LXplbmhlaQ
を使用して、透かしテキストのフォントをWenQuanYi Zen Heiに設定します。 d3F5LXplbmhlaQは、Base64でWenQuanYi Zen Heiをエンコードした結果です。text_SGVsbG8gV29ybGQ
を使用して、文字列 "Hello World" をテキスト透かしとしてソース画像に追加します。color_FFFFFF,size_30
を使用して、透かしテキストの色を白、テキストのサイズを30ピクセルに設定します。shadow_50
を使用して、透かしテキストの影の不透明度を50% に設定します。g_se、x_10、y_10
を使用して、テキストの透かしの位置を右下に、水平マージンを10ピクセルに、中央線からの垂直オフセットを10ピクセルに設定します。
次の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イメージの名前をURLセーフ文字列にBase64-encodeします。 エンコード結果は
cGFuZGEucG5n
で、画像の処理に使用されるURLが https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/watermark,image_cGFuZGEucG5n です。ソースイメージにイメージウォーターマークを追加するときに複数のIMGパラメータを設定する
この例では、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イメージをイメージ透かしとしてソースイメージに追加します。 cGFuZGEucG5nは、Base64でpanda.pngをエンコードした結果です。t_90
を使用して、透かし画像の不透明度を90% に設定します。g_se、x_10、y_10
を使用して、画像の透かしの位置を右下に、水平マージンを10ピクセルに、中央線からの垂直オフセットを10ピクセルに設定します。
画像透かしを前処理してからIMGパラメータを設定する
この例では、IMGパラメータは、example.jpgイメージに対して次の操作を実行し、イメージ透かしとしてpanda.pngイメージをexample.jpgイメージに追加するように設定されています。
Resize, w_300
を使用して、ソースイメージexample.jpgの幅を300ピクセルにサイズ変更します。image_cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA
を使用して、イメージウォーターマークpanda.pngのサイズをソースイメージのサイズの30% に変更します (cGFuZGEucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLFBfMzA
はpanda.png?x-oss-process=image /Resize, P_30
のBase64-encoding結果です) 。t_90、g_se、x_10、y_10
を使用して、画像透かしの不透明度を90% に、画像透かしの位置を右下に、水平マージンを10ピクセルに、中央線からの垂直オフセットを10ピクセルに設定します。
次の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イメージの名前をURLセーフ文字列にBase64-encodeします。 エンコード結果は
cGFuZGEucG5n
です。watermark,image_cGFuZGEucG5n
を使用して、panda.png画像を画像透かしとして追加します。Tulips.jpgイメージの名前をURLセーフ文字列にBase64-encodeします。 エンコード結果は
VHVsaXBzLmpwZw
である。watermark,image_VHVsaXBzLmpwZw,g_west,x_10,y_10
を使用して、画像の透かしの位置を中央左に、水平マージンを10ピクセルに、中央ラインからの垂直オフセットを10ピクセルに設定します。
次のURLは、上記のパラメーターに基づいて画像を処理するために使用されます。
例3: パブリック読み取りまたはパブリック読み取り書き込みイメージにテキストとイメージの透かしを追加する
次の例は、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
Java 3.17.4以降のOSS SDKが必要です。
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 {
// In this example, the endpoint of the China (Hangzhou) region is used. Specify your actual endpoint.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the region of the endpoint. Example: cn-hangzhou.
String region = "cn-hangzhou";
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Specify the name of the bucket. Example: examplebucket.
String bucketName = "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path.
String objectName = "src.jpg";
// Specify the full path to which you want to save the processed image. Example: D:\\localpath\\example-new.jpg. If a file that has the same name already exists in the path, the processed image overwrites the file. Otherwise, the processed image is saved in the path.
String pathName = "D:\\dest.jpg";
// Create an OSSClient instance.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Add the text watermark "Hello World" to the image.
String image = "image/watermark,text_SGVsbG8gV29ybGQ";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(image);
// Save the processed image as example-new.jpg to your local device.
// If you specify only the name of a local file such as example-new.jpg without specifying the local path of the file, the processed image is saved to the local path of the project to which the sample program belongs.
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
PHP 2.7.0以降のOSS SDKが必要です。
<?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;
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
$provider = new EnvironmentVariableCredentialsProvider();
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the name of the bucket. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the object. Example: exampledir/exampleobject.jpg. Do not include the bucket name in the full path.
$object = "src.jpg";
// Specify the full path to which you want to save the processed image. Example: D:\\localpath\\example-new.jpg. If a file that has the same name already exists in the path, the processed image overwrites the file. Otherwise, the processed image is saved in the path.
// If you specify only the name of a local file such as example-new.jpg without specifying the local path of the file, the processed image is saved to the local path of the project to which the sample program belongs.
$download_file = "D:\\dest.jpg";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Specify the ID of the Alibaba Cloud region in which the bucket is located.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Add the text watermark "Hello World" to the image.
$image = "image/watermark,text_SGVsbG8gV29ybGQ";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $image);
// Save the processed image to your local computer.
$ossClient->getObject($bucket, $object, $options);
Python
Python 2.18.4以降のOSS SDKが必要です。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
## Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Specify the ID of the Alibaba Cloud region in which the bucket is located.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: example/example.jpg.
key = 'src.jpg'
# Specify the name of the processed image.
new_pic = 'D:\\dest.jpg'
# Add the text watermark "Hello World" to the image.
image = 'image/watermark,text_SGVsbG8gV29ybGQ'
bucket.get_object_to_file(key, new_pic, process=image)
行く
Go 3.0.2以降のOSS SDKが必要です。
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() {
// Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint.
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)
}
// Specify the name of the bucket in which the source image is stored. Example: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// Specify the name of the source image. If the image is not stored in the root directory of the bucket, you must specify the full path of the image. Example: example/example.jpg.
sourceImageName := "src.jpg"
// Specify the name of the processed image.
targetImageName := "D://dest.jpg"
// Add the text watermark "Hello World" to the image.
image := "image/watermark,text_SGVsbG8gV29ybGQ"
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(image))
if err != nil {
HandleError(err)
}
}
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。 詳しくは、「GetObject」をご参照ください。
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: OSS qn6q**************:77Dv****************
よくある質問
オンラインまたはローカルの画像を透かし画像として使用する方法?
IMGを使用して画像の透かしをソース画像に追加する場合は、透かし画像とソース画像が同じバケットに保存されていることを確認してください。 オンライン画像またはローカル画像を画像透かしとしてソース画像に追加するには、まず、ソース画像が保存されているバケットに画像をアップロードする必要があります。
テキスト透かしを追加したときに「フォントコンテンツが大きすぎます」というメッセージが表示された場合はどうすればよいですか?
OSS IMGパラメーターを使用して画像にテキスト透かしを追加する場合、テキスト透かしの最大許容長は64文字で、各漢字は3文字に相当します。 「フォントコンテンツが大きすぎます」というメッセージが表示された場合は、テキストの透かしを短くすることを推奨します。 詳細については、「例1: パブリック読み取りイメージまたはパブリック読み取り /書き込みイメージにテキスト透かしを追加する」をご参照ください。
プライベートオブジェクトに画像透かしを追加できなかった場合はどうすればよいですか?
プライベートオブジェクトのURLに署名する必要があります。 署名付きURLの末尾にIMGパラメーターを直接追加することはできません。 プライベートオブジェクトを処理する場合は、署名にIMGパラメーターを追加します。 詳細については、「IMGパラメーターを含む署名付きオブジェクトURLの生成」をご参照ください。
画像透かしを追加するときに、画像透かしの背景色を設定できますか?
いいえ。 画像透かしの背景色を設定することはできません。
署名付きURLを使用して画像にアクセスするにはどうすればよいですか?
プライベートオブジェクトのURLに署名する必要があります。 署名付きURLの末尾にIMGパラメーターを直接追加することはできません。 プライベートオブジェクトを処理する場合は、署名にIMGパラメーターを追加します。 詳細については、「IMG」をご参照ください。
OSSは透かしの垂直配置をサポートしていますか?
はい、OSSは透かしの垂直配置をサポートしています。 透かしを垂直に配置する場合は、透かし操作を複数の透かし操作に分割し、複数の透かし操作を使用して垂直透かし配置を実装できます。
画像のサイズに応じてウォーターマークを動的にサイズ変更する方法は?
透かしは動的にサイズ変更できません。 カスタム検出ロジックを作成して、画像のサイズを検出し、比率または特定のルールに基づいて透かしのサイズを決定できます。 API操作を呼び出す前に、コードにカスタム検出ロジックを実装する必要があります。
画像にいくつの透かしを同時に追加できますか?
最大3つの透かしを同時に画像に追加できます。 画像に3つ以上の透かしを同時に追加する場合は、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。