OSS でイメージスタイルを作成すると、リサイズ、トリミング、回転、ウォーターマークなどの複数の処理操作を組み合わせて、バケット内の画像に適用できます。
スタイルの作成
各バケットは最大 50 個の画像スタイルをサポートし、そのバケット内の画像にのみ適用されます。さらに作成する必要がある場合は、テクニカルサポートにお問い合わせください。
OSS コンソール
OSSコンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。 [バケット] ページで、目的のバケットを見つけてクリックします。
-
左側のナビゲーションペインで、データ処理 > 画像処理 を選択します。
-
画像処理 ページで、スタイルの作成 をクリックします。
-
スタイルの作成 パネルで、次のいずれかの方法を使用してスタイルを設定します。
-
[基本設定]:GUI を使用して処理方法を選択し、次のパラメーターを設定します。
カテゴリ
パラメーター
説明
ルール名
[ルール名]
スタイル名は 1~63 文字で、使用できる文字は英字、数字、アンダースコア (_)、ハイフン (-)、ピリオド (.) です。
[画像]
[フォーマット変換]
画像フォーマットを変換します。現在のフォーマットを維持するには、[オリジナル] を選択します。
オプション:[オリジナル]、[jpg]、[jpeg]、[png]、[bmp]、[gif]、[webp]、または [tiff]。
[プログレッシブ表示]
画像が読み込まれるにつれて徐々に鮮明になる、ぼやけたアウトラインを表示します。
説明この機能は、JPG 形式の画像にのみ有効です。
[自動方向付け]
リサイズ前に、EXIF データに基づいて画像を回転させます。
[画質]
画質オプションとして [相対]、[絶対]、または [非圧縮] を選択します。
品質変換。
[サイズ変更]
[サイズ変更タイプ]
リサイズ方法として [サムネイルを使用しない]、[比例縮小]、[比例拡大]、または [固定幅と高さ] を選択します。
[効果]
[画像の輝度]
スライダーをドラッグして輝度を調整します。
0 が元の値です。負の値は画像を暗くし、正の値は明るくします。
[画像のコントラスト]
スライダーをドラッグしてコントラストを調整します。
0 が元の値です。負の値はコントラストを下げ、正の値は上げます。
[画像のシャープネス]
画像の鮮明度を向上させます。
シャープネスを有効にし、スライダーをドラッグしてレベルを調整します。
[画像のぼかし]
ぼかしを有効にし、スライダーをドラッグしてぼかし半径と標準偏差を設定します。
[画像の回転]
スライダーをドラッグして回転角度を設定します。
[透かし]
[透かし]
[画像] または [テキスト] のウォーターマークを追加するか、どちらも追加しないかを選択します。
-
[詳細設定]:
image/action1,parame_value1/action2,parame_value2/...の形式でパラメーター文字列として処理を指定します。サポートされているパラメーターについては、「画像処理パラメーター」をご参照ください。例:
image/resize,p_63/quality,q_90は、画像を元のサイズの 63% にリサイズし、相対品質を 90% に設定します。説明1 つのスタイルで画像ウォーターマークとテキストウォーターマークを組み合わせるには、詳細設定 を使用します。
-
-
OK をクリックします。
SDK
SDK を使用して画像スタイルを作成します。以下に Python と Go の例を示します。
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"
# エンドポイントに対応するリージョンを指定します。例:cn-hangzhou。このパラメーターは、V4 署名アルゴリズムを使用する場合に必要です。
region = "cn-hangzhou"
# examplebucket をバケット名に置き換えます。
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('スタイルが作成されました。ステータスコード: ' + 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 インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。たとえば、中国 (杭州) リージョンの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。他のリージョンの場合は、実際のエンドポイントを使用します。
// yourRegion をバケットが配置されているリージョンに設定します。たとえば、中国 (杭州) リージョンの場合、リージョンを 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 のインストール」をご参照ください。
次のコマンドを実行すると、examplebucket バケットに imageStyle という名前の画像スタイルが作成されます。
ossutil api put-style --bucket examplebucket --style-name imageStyle --style "{\"Content\":\"image/resize,p_50\"}"
詳細については、「put-style」をご参照ください。
スタイルの使用ルール
イメージスタイルを設定した後、画像処理 URL または OSS 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 SDK の使用
OSS 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 インスタンスが不要になったら、シャットダウンメソッドを呼び出してリソースを解放します。
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({
// バケットが配置されているリージョンに yourregion を設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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,
// yourbucketname をバケット名に設定します。
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 ピクセル、高さ 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"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。 このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"
# examplebucket をお使いのバケット名に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# ソースイメージが格納されているバケットの名前 (examplebucket など) を指定します。
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリにない場合は、イメージの完全なパス (exampledir/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 インスタンスを作成します。
// yourEndpoint をバケットのエンドポイントに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 他のリージョンについては、実際のエンドポイントを使用します。
// yourRegion をバケットが配置されているリージョンに設定します。 たとえば、中国 (杭州) リージョンのバケットの場合、リージョンを 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 {
HandleError(err)
}
// ソースイメージが格納されているバケットの名前 (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 アカウント情報を初期化します。*/
/* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。*/
std::string Endpoint = "yourEndpoint";
/* yourRegion を、バケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを 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"
/* yourEndpoint を、バケットが配置されているリージョンのエンドポイントに置き換えます。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 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";
/* yourRegion を、バケットが配置されているリージョンに置き換えます。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
options->config = oss_config_create(options->pool);
/* aos_string_t 型を char* 文字列で初期化します。 */
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[])
{
/* プログラムエントリで aos_http_io_initialize メソッドを呼び出して、ネットワークやメモリなどのグローバルリソースを初期化します。 */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* メモリ管理用のメモリプール (pool) は apr_pool_t に相当します。 実装コードは apr ライブラリにあります。 */
aos_pool_t *pool;
/* 新しいメモリプールを作成します。 2 番目のパラメーターは NULL で、新しいプールが他のメモリプールから継承しないことを示します。 */
aos_pool_create(&pool, NULL);
/* オプションを作成して初期化します。 このパラメーターには、endpoint、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 オペレーション
完全にコントロールしたい場合は、PutStyle API などの REST API を直接呼び出してください。リクエスト署名を手動で計算する必要があります。
よくある質問
画像スタイルは無料ですか?
画像スタイル自体は無料です。ただし、スタイルを適用した画像処理には料金が発生します。詳細については、「課金」をご参照ください。