イメージスタイルを作成して、Object Storage Service (OSS) のイメージに対して、スケーリング、トリミング、回転、ウォーターマークの追加などの操作を実行できます。 イメージスタイルは、バケット内のイメージを迅速に処理および変換するために使用できる複数のイメージ処理操作を指定します。
イメージスタイルの作成
バケットごとに最大 50 個のスタイルを作成できます。 これらのスタイルは、そのバケット内のイメージファイルにのみ適用されます。 さらにスタイルを作成するには、テクニカルサポートにお問い合わせください。
OSS コンソールの使用
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
左側のナビゲーションウィンドウで、インテリジェントデータ処理 > 画像処理 を選択します。
画像処理 ページで、[スタイルの作成] をクリックします。
[スタイルの作成] パネルで、次のいずれかの方法を使用してスタイルを構成します。
基本設定: グラフィカルユーザーインターフェイス (GUI) を使用してイメージ処理メソッドを選択し、必要に応じて次のパラメーターを構成します。
カテゴリ
パラメーター
説明
ルール名
ルール名
イメージスタイルルールの名前。 名前は 1~63 文字で、文字、数字、アンダースコア (_)、ハイフン (-)、ピリオド (.) のみを含めることができます。
イメージ
フォーマット変換
イメージフォーマットを変換するかどうかを指定します。 元のフォーマットは変換なしを意味します。
必要に応じて、元のフォーマット、jpg、jpeg、png、bmp、gif、webp、または tiff を選択します。
段階的表示
最初にイメージ全体のぼやけたアウトラインを表示し、完全なイメージが表示されるまで徐々に読み込みます。
説明この機能は、JPG フォーマットのイメージに対してのみ有効です。
自動回転
スケーリングの前に、EXIF 回転情報に基づいてイメージを回転させます。
イメージ品質
必要に応じて、相対品質、絶対品質、または非圧縮を選択します。
詳細については、「品質変換」をご参照ください。
スケーリング
スケーリング方法
必要に応じて、スケーリングなし、比例縮小、比例拡大、または指定された幅と高さへのスケーリングを選択します。
効果
イメージの輝度
スライダーをドラッグして輝度を設定します。
0 は元の輝度を示します。 0 未満の値は、元の輝度よりも低い輝度を示します。 0 より大きい値は、元の輝度よりも高い輝度を示します。
イメージのコントラスト
スライダーをドラッグしてコントラストを設定します。
0 は元のコントラストを示します。 0 未満の値は、元のコントラストよりも低いコントラストを示します。 0 より大きい値は、元のコントラストよりも高いコントラストを示します。
イメージシャープ
シャープパラメーターは、OSS に保存されているソースイメージの精細度を向上させるために使用されます。
イメージシャープを有効にした後、スライダーをドラッグしてシャープ値を設定できます。
イメージぼかし
イメージのぼかしを有効にした後、スライダーをドラッグしてぼかし半径と標準偏差を設定できます。
イメージ回転
スライダーをドラッグしてイメージの回転角度を設定します。
ウォーターマーク
ウォーターマーク
必要に応じて、ウォーターマークなし、イメージウォーターマーク、またはテキストウォーターマークを選択します。
詳細設定: API コードを使用してイメージ処理メソッドを指定します。 フォーマットは
image/action1,parame_value1/action2,parame_value2/...です。 サポートされているイメージ処理パラメーターの詳細については、「イメージ処理パラメーター」をご参照ください。たとえば、
image/resize,p_63/quality,q_90は、最初にイメージを元のサイズの 63% にスケーリングし、次にイメージの品質を 90% に設定します。説明イメージウォーターマークとテキストウォーターマークの両方をスタイルに含めるには、[詳細設定] を使用してスタイルを作成する必要があります。
OK をクリックします。
Alibaba Cloud SDK の使用
Python および Go SDK のみがイメージスタイルの作成をサポートしています。
Python
# -*- 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 に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングするリージョンの ID を指定します。 例: cn-hangzhou。 このパラメーターは、署名アルゴリズム V4 を使用する場合に必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# imagestyle などのイメージスタイルの名前を指定します。
style = 'imagestyle'
# イメージの幅を 200 ピクセルにサイズ変更するなど、イメージスタイルの操作を指定します。
content = 'image/resize,w_200'
# イメージスタイルを作成します。
result = bucket.put_bucket_style(style, content)
print ('Style created. Returned status:' + str(result.status))Go
package main
import (
"fmt"
"os"
"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 インスタンスを作成します。
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 実際のエンドポイントを指定します。
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 実際のリージョンを指定します。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名アルゴリズムのバージョンを指定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。 例: examplebucket。
bucketName := "examplebucket"
// ソースイメージを 63% に縮小し、イメージの相対品質を 90% に設定するなど、イメージスタイルの操作を指定します。
styleContent := "image/resize,p_63/quality,q_90"
// イメージスタイルの名前を指定します。 例: imagestyle。
styleName := "imagestyle"
err = client.PutBucketStyle(bucketName,styleName, styleContent)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Bucket Style Set Success!")
}ossutil の使用
ossutil を使用してイメージスタイルを作成できます。 ossutil のインストール方法の詳細については、「ossutil のインストール」をご参照ください。
次のコマンドは、examplebucket バケットの imageStyle という名前のイメージスタイルを作成します。
ossutil api put-style --bucket examplebucket --style-name imageStyle --style "{\"Content\":\"image/resize,p_50\"}"このコマンドの詳細については、「put-style」をご参照ください。
使用ルール
イメージスタイルを設定した後、イメージ処理 URL または Alibaba Cloud SDK を使用して、スタイルをイメージに適用できます。
スタイルを使用して GIF イメージなどの動的イメージを処理する場合は、スタイルに /format,gif パラメーターを追加する必要があります。 そうしないと、動的イメージが処理後に静的イメージになる可能性があります。
イメージ処理 URL の使用
イメージのアクセス URL にイメージスタイルを追加します。 フォーマットは http(s)://BucketName.Endpoint/ObjectName?x-oss-process=style/<StyleName> です。 例: https://oss-console-img-demo-cn-hangzhou-3az.oss-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=style/small。
カスタム区切り文字を設定した場合、その区切り文字を使用して ?x-oss-process=style/ を置き換えて、イメージ処理 URL を簡略化できます。 たとえば、区切り文字を感嘆符 (!) に設定した場合、イメージ処理 URL は http(s)://BucketName.Endpoint/ObjectName!StyleName になります。 カスタム区切り文字の設定方法の詳細については、「カスタム区切り文字の設定」をご参照ください。
カスタムドメイン名をバケットにアタッチして、イメージ処理 URL をさらに簡略化できます。 たとえば、カスタムドメイン名 example.com がバケットにアタッチされている場合、URL は https://example.com/example.jpg!small に簡略化されます。 カスタムドメイン名をアタッチした後、オンラインでイメージ処理効果をプレビューすることもできます。 詳細については、「カスタムドメイン名を使用した OSS へのアクセス」をご参照ください。
Alibaba Cloud SDK の使用
Alibaba Cloud SDK を使用して、複数のイメージ処理パラメーターをスタイルにカプセル化し、そのスタイルを使用してイメージをバッチ処理できます。 次のコードは、一般的なプログラミング言語の例を示しています。 他の言語のコード例については、「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 {
// この例では、中国 (杭州) リージョンのエンドポイントが使用されています。 実際のエンドポイントを指定します。
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// バケットの名前を指定します。 例: examplebucket。
String bucketName = "examplebucket";
// オブジェクトの完全なパスを指定します。 完全なパスにバケット名を含めないでください。
String objectName = "exampleobject.jpg";
// 処理されたイメージを保存する完全なパスを指定します。 例: D:\\localpath\\example-new.jpg。 パスに同じ名前のファイルが既に存在する場合、処理されたイメージはファイルを上書きします。 それ以外の場合、処理されたイメージはパスに保存されます。
String pathName = "D:\\localpath\\example-new.jpg";
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
String region = "cn-hangzhou";
// 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 {
// カスタムイメージスタイルを使用してイメージを処理します。
// この例では、yourCustomStyleName を OSS コンソールで作成したイメージスタイルの名前に置き換えます。
String style = "style/yourCustomStyleName";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
// 処理されたイメージに example-new.jpg という名前を付け、イメージをローカルコンピューターに保存します。
// example-new.jpg などのローカルファイルの名前のみを指定し、ファイルのローカルパスを指定しない場合、処理されたイメージはサンプルプログラムが属するプロジェクトのローカルパスに保存されます。
ossClient.getObject(request, new File(pathName));
} 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
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();
// yourEndpoint をバケットが配置されているリージョンのエンドポイントに設定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
$endpoint = "yourEndpoint";
// バケット名を指定します。 例: examplebucket。
$bucket= "examplebucket";
// オブジェクトの完全なパスを指定します。 例: exampledir/exampleobject.jpg。 完全なパスにバケット名を含めることはできません。
$object = "exampledir/exampleobject.jpg";
// ローカルファイルの完全なパスを指定します。 例: D:\\localpath\\example-new.jpg。 指定したローカルファイルが存在する場合は上書きされます。 ファイルが存在しない場合は作成されます。
// ローカルパスを指定せず、ローカルファイル名 (例: example-new.jpg) のみを指定した場合、ファイルはデフォルトでサンプルプログラムが存在するプロジェクトのローカルパスに保存されます。
$download_file = "D:\\localpath\\example-new.jpg";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// ソースイメージが指定されたバケットにない場合は、イメージをバケットにアップロードします。
// $ossClient->uploadFile($bucket, $object, "D:\\localpath\\exampleobject.jpg");
// カスタムスタイルを使用してイメージを処理します。
// yourCustomStyleName を OSS コンソールで作成したイメージスタイルの名前に設定します。
$style = "style/yourCustomStyleName";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $style);
// 処理されたイメージに example-new.jpg という名前を付け、ローカルマシンに保存します。
$ossClient->getObject($bucket, $object, $options);
// イメージが処理された後、不要になった場合はソースイメージをバケットから削除できます。
// $ossClient->deleteObject($bucket, $object); const OSS = require('ali-oss');
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを oss-cn-hangzhou に設定します。
region: 'yourregion',
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// イメージのサイズを 100 × 100 ピクセルに変更します。
async function scale() {
try {
const result = await client.get('example.jpg', './example-resize.jpg', { process: 'image/resize,m_fixed,w_100,h_100'});
} catch (e) {
console.log(e);
}
}
scale()
// 座標ペア (100, 100) で指定された位置から開始して、イメージを 100 x 100 ピクセルにトリミングします。
async function cut() {
try {
const result = await client.get('example.jpg', './example-crop.jpg', { process: 'image/crop,w_100,h_100,x_100,y_100,r_1'});
} catch (e) {
console.log(e)
}
}
cut()
// イメージを 90 度回転させます。
async function rotate() {
try {
const result = await client.get('example.jpg', './example-rotate.jpg', { process: 'image/rotate,90'});
} catch (e) {
console.log(e);
}
}
rotate()
// イメージをシャープにします。 パラメーターを 100 に設定します。
async function sharpen() {
try {
const result = await client.get('example.jpg', './example-sharpen.jpg', { process: 'image/sharpen,100'});
} catch (e) {
console.log(e);
}
}
sharpen()
// イメージにウォーターマークを追加します。
async function watermark() {
try {
const result = await client.get('example.jpg', './example-watermark.jpg', { process: 'image/watermark,text_SGVsbG8g5Zu-54mH5pyN5YqhIQ'});
} catch (e) {
console.log(e);
}
}
watermark()
// イメージのフォーマットを変換します。
async function format() {
try {
const result = await client.get('example.jpg', './example-format.jpg', { process: 'image/format,png'});
} catch (e) {
console.log(e);
}
}
format()
// イメージ情報を取得します。
async function info() {
try {
const result = await client.get('example.jpg', './example-info.txt', {process: 'image/info'});
} catch (e) {
console.log(e);
}
}
info()# -*- coding: utf-8 -*-
import os
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 に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントにマッピングするリージョンの ID を指定します。 例: cn-hangzhou。 このパラメーターは、署名アルゴリズム V4 を使用する場合に必要です。
region = "cn-hangzhou"
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket。
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: example/example.jpg。
key = 'exampledir/example.jpg'
# 処理されたイメージの名前を指定します。
new_pic = 'exampledir/newexample.jpg'
# 処理するイメージが指定されたバケットに存在しない場合は、バケットのローカルパスに保存されているイメージをアップロードする必要があります。
# bucket.put_object_from_file(key, 'D:\\localpath\\example.jpg')
# カスタムイメージスタイルを使用してイメージを処理します。 yourCustomStyleName を OSS コンソールで作成したイメージスタイルの名前に設定します。
style = 'style/yourCustomStyleName'
# 処理されたイメージをローカルコンピューターに保存します。
bucket.get_object_to_file(key, new_pic, process=style)
# イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。
# bucket.delete_object(key)
# 処理されたイメージが不要になった場合は、イメージを削除できます。
# os.remove(new_pic)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 に設定します。 実際のエンドポイントを指定します。
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 実際のリージョンを指定します。
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// 署名アルゴリズムのバージョンを指定します。
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket。
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
HandleError(err)
}
// ソースイメージの名前を指定します。 ソースイメージがバケットのルートディレクトリに保存されていない場合は、イメージの完全なパスを指定する必要があります。 例: example/example.jpg。
sourceImageName := "example/example.jpg"
// 処理されたイメージを newexample.jpg としてローカルコンピューターに保存します。
targetImageName := "D:\\localpath\\newexample.jpg"
// イメージスタイルを使用してイメージを処理します。 yourCustomStyleName を OSS コンソールで作成したイメージスタイルの名前に設定します。
style := "style/yourCustomStyleName"
// 処理されたイメージをローカルコンピューターに保存します。
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
if err != nil {
HandleError(err)
}
}
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* OSS へのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
std::string Endpoint = "yourEndpoint";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
std::string Region = "yourRegion";
/* ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket。 */
std::string BucketName = "examplebucket";
/* ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージの完全なパスを指定する必要があります。 例: exampledir/example.jpg。 */
std::string ObjectName = "exampledir/example.jpg";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClient client(Endpoint, credentialsProvider, conf);
client.SetRegion(Region);
/* イメージスタイルを使用してイメージを処理します。 yourCustomStyleName をステップ 1 で作成したイメージスタイルの名前に置き換えます。 */
std::string Process = "style/yourCustomStyleName";
GetObjectRequest request(BucketName, ObjectName);
request.setProcess(Process);
auto outcome = client.GetObject(request);
if (outcome.isSuccess()) {
std::cout << "Image processed successfully." << std::endl;
} else {
std::cout << "Failed to process image. Error code: " << outcome.error().Code()
<< ", Message: " << outcome.error().Message()
<< ", RequestId: " << outcome.error().RequestId() << std::endl;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
return 0;
}#include "oss_api.h"
#include "aos_http_io.h"
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 */
const char *endpoint = "yourEndpoint";
/* バケットの名前を指定します。 例: examplebucket。 */
const char *bucket_name = "examplebucket";
/* オブジェクトの完全なパスを指定します。 完全なパスにバケット名を含めないでください。 例: exampledir/exampleobject.txt。 */
const char *object_name = "exampledir/exampleobject.txt";
/* バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* char* 文字列を使用して、aos_string_t 型のデータを初期化します。 */
aos_str_set(&options->config->endpoint, endpoint);
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。 */
aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
// 2 つの追加パラメーターを指定します。
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* CNAME を使用するかどうかを指定します。 値 0 は、CNAME が使用されないことを示します。 */
options->config->is_cname = 0;
/* タイムアウト期間などのネットワークパラメーターを指定します。 */
options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
/* main() で aos_http_io_initialize メソッドを呼び出して、ネットワークリソースやメモリリソースなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリを管理するためのメモリプールを作成します。 aos_pool_t は apr_pool_t と同等です。 メモリプールを作成するためのコードは APR ライブラリに含まれています。 */
aos_pool_t *pool;
/* メモリプールを作成します。 2 番目のパラメーターの値は NULL です。 この値は、プールが他のメモリプールを継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。 このパラメーターには、エンドポイント、access_key_id、access_key_secret、is_cname、curl などのグローバル構成情報が含まれます。 */
oss_request_options_t *oss_client_options;
/* メモリプール内のメモリリソースをオプションに割り当てます。 */
oss_client_options = oss_request_options_create(pool);
/* oss_client_options を初期化します。 */
init_options(oss_client_options);
/* パラメーターを初期化します。 */
aos_string_t bucket;
aos_string_t object;
aos_string_t file;
aos_table_t *headers = NULL;
aos_table_t *params = NULL;
aos_table_t *resp_headers = NULL;
aos_status_t *resp_status = NULL;
aos_str_set(&bucket, bucket_name);
aos_str_set(&object, object_name);
/* イメージスタイルを指定します。 */
params = aos_table_make(pool, 1);
/* yourCustomStyleName をステップ 1 で作成したイメージスタイルの名前に設定します。 */
apr_table_set(params, OSS_PROCESS, "style/yourCustomStyleName");
/* 処理されたイメージをローカルコンピューターに保存します。 */
aos_str_set(&file, "yourLocalFileName");
resp_status = oss_get_object_to_file(oss_client_options, &bucket, &object, headers, params, &file, &resp_headers);
if (aos_status_is_ok(resp_status)) {
printf("get object to file succeeded\n");
} else {
printf("get object to file failed\n");
}
/* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
return 0;
}ソースバケットから宛先バケットへのイメージスタイルのインポート
ソースバケットで作成されたスタイルをエクスポートし、宛先バケットにインポートできます。 これにより、スタイルをすばやく適用して、宛先バケット内のイメージファイルを処理できます。
ソースバケットからスタイルをエクスポートします。
ソースバケットの管理ページで、インテリジェントデータ処理 > 画像処理 を選択します。
画像処理 ページで、目的のスタイルを選択し、スタイルをエクスポート をクリックします。
スタイルを宛先バケットにインポートします。
宛先バケットの管理ページで、インテリジェントデータ処理 > 画像処理 を選択します。
画像処理 ページで、インポートスタイル をクリックします。
表示されるダイアログボックスで、エクスポートされたスタイルファイルを選択し、[開く] をクリックします。
スタイルがインポートされた後、それらを使用して宛先バケット内のイメージファイルを処理できます。
関連 API 操作
前述のコンソール操作は、API 呼び出しに基づいています。 高いカスタマイズ要件がある場合は、直接 REST API リクエストを行うことができます。 これには、署名を計算するためのコードを手動で記述する必要があります。 詳細については、「PutStyle」をご参照ください。
よくある質問
イメージスタイルの使用には料金がかかりますか?
いいえ、イメージスタイルは無料です。 ただし、スタイルを使用してイメージを処理すると、イメージ処理料金が請求されます。 イメージ処理料金の詳細については、「イメージ処理」をご参照ください。
リファレンス
イメージ処理パラメーターの使用方法の詳細については、「イメージ処理メソッド」をご参照ください。
処理されたイメージを OSS に保存する方法の詳細については、「イメージ処理の永続化」をご参照ください。