このトピックでは、オブジェクトURL、OSS SDK、またはAPI操作を使用して、Object Storage Service (OSS) に保存されているイメージオブジェクトを処理する方法について説明します。
オブジェクトURLを使用して画像を処理する
URLを使用して画像オブジェクトを処理するには、画像処理 (IMG) パラメーターまたは画像スタイルパラメーターをURLの末尾に追加します。
処理するイメージオブジェクトのアクセス制御リスト (ACL) がpublic-readまたはpublic-read-writeの場合、イメージを処理するオブジェクトのURLにIMGパラメーターまたはイメージスタイルパラメーターを追加できます。
処理するイメージのACLが非公開の場合、OSS SDKを使用して、イメージを処理するためのIMG操作をオブジェクトのURLに追加できます。 オブジェクトURLにパラメーターを追加して、URLが非公開のイメージを処理することはできません。
デフォルトでは、URLを使用してバケット内のイメージオブジェクトにアクセスすると、イメージがダウンロードされます。 URLを使用してイメージオブジェクトにアクセスするときにイメージオブジェクトがプレビューされるようにするには、カスタムドメイン名をバケットにマップし、CNAMEレコードを追加する必要があります。 詳細については、「カスタムドメイン名のマップ」をご参照ください。
ACLがpublic-readまたはpublic-read-writeであるイメージオブジェクト
次の表に、イメージオブジェクトのURLに追加できるパラメーターを示します。
IMGモード | IMGパラメーターの追加 | 画像スタイルパラメータの追加 |
IMG URL |
|
|
パラメーターの説明 |
|
カスタム区切り文字を指定した場合、カスタム区切り文字を使用して |
例 |
ACLがプライベートのイメージオブジェクト
次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用して、IMGパラメーターを含む署名付きURLを生成する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用して、IMGパラメーターを含む署名付きURLを生成する方法の詳細については、「概要」をご参照ください。
com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.GeneratePresignedUrlRequestをインポートします。impor t java.net.URL;
java.util.Dateをインポートします。public classデモ {
public static void main(String[] args) 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";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
文字列objectName = "exampleobject.jpg";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// 画像のサイズを100ピクセルの高さと幅に変更し、画像を90度回転させます。
String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
// 署名付きURLの有効期間を10分に設定します。
Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 );
GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
req.setExpiration(expiration);
req.setProcess(style);
URL signedUrl = ossClient.generatePresignedUrl(req);
System.out.println(signedUrl);
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
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';
}
OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.jpg バケット名をフルパスに含めないでください。
$object = "exampledir/exampleobject.jpg";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point);
// IMGパラメータを含む署名付きURLを生成します。 URLの有効期間は3,600秒です。 署名付きURLは、ブラウザを使用して直接アクセスできます。
$timeout = 3600;
$options=配列 (
// 画像のサイズを100x100ピクセルに変更します。
OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );
$signedUrl = $ossClient->signUrl($bucket、$object、$timeout、"GET" 、$options);
印刷 ("rtmp url: \n") 。 $signedUrl);
const OSS = require("ali-oss");
const client = new OSS({
// バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。
リージョン: "oss-cn-hangzhou" 、
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
accessKeyId: process.env.OSS_ACCESS_KEY_ID、
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
// バケットの名前を指定します。
bucket: "examplebucket" 、});
// URLの有効期間を10分に、画像スタイルをimage/resize、w_300に設定します。
const signUrl = client.signatureUrl("example.png", {
有効期限: 600、
プロセス: "image/resize,w_300",
});
console.log("signUrl=" + signUrl);
# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# バケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# イメージが保存されているバケットの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
key = 'exampledir/example.jpg'
# 画像が指定されたバケットに保存されていない場合は、画像をバケットにアップロードする必要があります。
# bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ')
# 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させます。
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
# IMGパラメータを含む署名付きオブジェクトURLを生成します。 URLの有効期間を600に設定します。 単位は秒です。
url = bucket.sign_url('GET', key, 10*60, params={'x-oss-process': style})
Aliyun.OSSを使用した印刷 (url)
;
Aliyun.OSS.Common; を使用
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
var endpoint = "yourEndpoint";
// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
var bucketName = "examplebucket";
// ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
var objectName = "exampledir/exampledir.jpg";
// OSSClientインスタンスを作成します。
var client = new OssClient (エンドポイント、accessKeyId、accessKeySecret);
トライ
{
// 画像のサイズを100 × 100ピクセルに変更します。
var process = "image/resize,m_fixed,w_100,h_100";
var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get)
{
Expiration = DateTime.Now.AddHours(1),
Process = process
};
// 署名付きURLを生成します。
var uri = client.GeneratePresignedUri(req);
Console.WriteLine("Generate Presigned Uri:{0} with process:{1} successed", uri, process);
}
キャッチ (OssException ex)
{
Console.WriteLine("Failed with error code: {0}; エラー情報: {1} 。 \nRequestID:{2}\tHostID:{3}"、
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
キャッチ (例外ex)
{
Console.WriteLine("Failed with error info: {0}" 、メッセージなど);
}
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
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)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// イメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
ossImageName := "exampledir/example.jpg"
// IMGパラメータを含む署名付きURLを生成します。 署名付きURLの有効期間を600秒に設定します。
signedURL, err := bucket.SignURL(ossImageName, oss.HTTPGet, 600, oss.Process("image/format,png"))
if err! =nil {
HandleError(err)
} else {
fmt.Println(signedURL)
}
}
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* イメージが配置されているバケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* イメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージ名の前にイメージへのパスを追加します。 例: exampledir/example.jpg */
std::string ObjectName = "exampledir/example.jpg";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* オブジェクトのIMGパラメーターを含む署名付きURLを生成します。 */
std::string Process = "image/resize,m_fixed,w_100,h_100";
GeneratePresignedUrlRequestリクエスト (BucketName, ObjectName, Http::Get);
request.setProcess (プロセス);
auto outcome = client.GeneratePresignedUrl (リクエスト);
if (outcome.isSuccess()) {
std::cout << "生成された署名済みURL: " << outcome.result() << std::endl;
} else {
std::cout << "事前署名付きURLの生成に失敗しました。 エラーコード: " << outcome. Error (). code ()
<< ", Message: " << outcome.error().Message()
<< ", RequestId: " << outcome.error().RequestId() << std::endl;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
0を返します。}
#include "oss_api.h"
# 「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";
void init_options(oss_request_options_t * オプション)
{
options->config = oss_config_create(options->pool);
/* char * stringを使用して、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"));
/* 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);
/* Create and initialize options. このパラメーターには、エンドポイント、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_table_t *params = NULL;
aos_http_request_t *req;
char *url_str;
apr_time_t now;
int64_t expire_time;
aos_str_set(&bucket, bucket_name);
aos_str_set(&object, object_name);
/* 画像のサイズを100 × 100ピクセルに変更します。 */
params = aos_table_make(pool, 1);
apr_table_set(params, OSS_PROCESS, "image/resize,m_fixed,w_100,h_100");
req = aos_http_request_create(pool);
req->method = HTTP_GET;
req->query_params = params;
/* 有効期間 (expire_time) を秒単位で指定します。 */
now = apr_time_now();
expire_time = now / 1000000 + 10 * 60;
/* 署名付きURLを生成します。 */
url_str = oss_gen_signed_url(oss_client_options, &bucket, &object, expire_time, req);
printf("url: %s\n", url_str);
/* メモリプールを解放します。 この操作により、リクエストに割り当てられたメモリリソースが解放されます。 */
aos_pool_destroy(pool);
/* 割り当てられたグローバルリソースを解放します。 */
aos_http_io_deinitialize();
0を返します。}
// イメージが配置されているバケットの名前を指定します。
NSString * bucketName = @ "examplebucket";
// イメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージ名の前にイメージへのパスを追加します。 例: exampledir/example.jpg
NSString * objectKey = @ "exampledir/example.jpg";
// IMGパラメータを含む署名付きURLを生成します。 署名付きURLの有効期間を1800秒に設定します。
OSSTask * task = [_client presignConstrainURLWithBucketName:bucketName withObjectKey:objectKey withExpirationInterval:30*60 withParameters :@{@ "x-oss-process": @ "image/resize,w_50"}];
NSLog(@ "url: % @" 、task.result);
OSS SDKを使用したイメージの処理
OSS SDKのIMGパラメーターまたはイメージスタイルパラメーターを使用して、イメージを処理できます。
IMGパラメータの追加
IMGパラメーターを使用してイメージを処理する場合は、複数のIMGパラメーターをスラッシュ (/) で区切ります。 次のサンプルコードは、一般的なプログラミング言語でOSS SDKを使用してIMGパラメーターを設定する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してIMGパラメーターを設定する方法の詳細については、「概要」をご参照ください。
com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.GetObjectRequestをインポートします。java.io. ファイルをインポートします。public classデモ {
public static void main(String[] args) 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";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
文字列objectName = "exampleobject.jpg";
// 処理した画像を保存するフルパスを指定します。 例: D :\\ localpath\\example-new.jpg 同じ名前のファイルがすでにパスに存在する場合、処理されたイメージはファイルを上書きします。 そうでなければ、処理された画像はパスに保存される。
文字列pathName = "D :\\ localpath\\example-new.jpg";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
try {
// 画像のサイズを100ピクセルの高さと幅に変更し、画像を90度回転させます。
String style = "image/resize,m_fixed,w_100,h_100/rotate,90";
GetObjectRequest request = new GetObjectRequest(bucketName, objectName);
request.setProcess(style);
// 処理された画像example-new.jpgに名前を付け、画像をローカルコンピューターに保存します。
// ファイルのローカルパスを指定せずに、example-new.jpgなどのローカルファイル名のみを指定した場合、処理済み画像はサンプルプログラムが属するプロジェクトのローカルパスに保存されます。
ossClient.getObject (要求、新しいファイル ("D :\\ localpath\\example-new.jpg"));
} catch (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
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';
}
OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "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";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point, false);
// 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。
// $ossClient->uploadFile($bucket、$object、"D :\\ localpath\\exampleobject.jpg");
// 画像のサイズを100 × 100ピクセルに変更した後、画像を90度回転させます。
$style = "image/resize,m_fixed,w_100,h_100/rotate,90";
$options=配列 (
OssClient::OSS_FILE_DOWNLOAD => $download_file,
OssClient::OSS_PROCESS => $style);
// 処理された画像example-new.jpgに名前を付け、画像をローカルコンピューターに保存します。
$ossClient->getObject($bucket、$object、$options);
// イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。
// $ossClient->deleteObject($bucket, $object);
# -*-コーディング: utf-8 -*-
osのインポート
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg
key = 'exampledir/example.jpg'
# 処理されたイメージの名前を指定します。
new_pic = 'exampledir/newexample.jpg'
# 処理するイメージが指定されたバケットに存在しない場合は、バケットのローカルパスに保存されているイメージをアップロードする必要があります。
# bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ')
# 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させてから、処理した画像をローカルコンピューターに保存します。
style = 'image/resize,m_fixed,w_100,h_100/rotate,90'
bucket.get_object_to_file(key, new_pic, process=style)
# イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。
# bucket.de lete_object (キー)
# 処理済みの画像が不要になった場合は、画像を削除できます。
# os.remove(new_pic)
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
)
func HandleError (エラーエラー) {
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)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// ソースイメージの名前を指定します。 ソースイメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg
sourceImageName := "exampledir/example.jpg"
// 処理されたイメージの名前を指定します。
targetImageName := "exampledir/newexample.jpg"
// 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させてから、ローカルコンピューターに保存します。
style := "image/resize,m_fixed,w_100,h_100/rotate,90"
err = bucket.GetObjectToFile(sourceImageName, targetImageName, oss.Process(style))
if err! =nil {
HandleError(err)
}
}
#include <alibabacloud/oss/OssClient.h>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg */
std::string ObjectName = "exampledir/example.jpg";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* 画像のサイズを100ピクセルの高さと幅に変更し、画像を90度回転させて、ローカルコンピューターに保存します。 */
std::string Process = "image/resize,m_fixed,w_100,h_100/rotate,90";
GetObjectRequestリクエスト (BucketName, ObjectName);
request.setProcess (プロセス);
auto outcome = client.GetObject (リクエスト);
if (outcome.isSuccess()) {
std::cout << "画像は正常に処理されました。" << std::endl;
} else {
std::cout << "イメージの処理に失敗しました。 エラーコード: " << outcome. Error (). code ()
<< ", Message: " << outcome.error().Message()
<< ", RequestId: " << outcome.error().RequestId() << std::endl;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
0を返します。}
#include "oss_api.h"
# 「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";
void init_options(oss_request_options_t * オプション)
{
options->config = oss_config_create(options->pool);
/* char * stringを使用して、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"));
/* 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);
/* Create and initialize options. このパラメーターには、エンドポイント、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);
/* 画像のサイズを100 × 100ピクセルに変更し、画像を90度回転させます。 */
params = aos_table_make(pool, 1);
apr_table_set(params、OSS_PROCESS、"image/resize、m_fixed、w_100、h_100/rotate、90");
/* 処理した画像をローカルコンピューターに保存します。 */
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();
0を返します。}
OSSGetObjectRequest * request = [OSSGetObjectRequest new];
// イメージが配置されているバケットの名前を指定します。
request.bucketName = @ "examplebucket";
// イメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg
request.objectKey = @ "exampledir/example.jpg";
// 画像を処理します。
request.xOssProcess = @ "image/resize,m_lfit,w_100,h_100";
OSSTask * getTask = [client getObject:request];
[getTask continueWithBlock:^ id(OSSTask * task) {
if (!task.error) {
NSLog(@ "ダウンロードイメージの成功!");
OSSGetObjectResult * getResult = task.result;
NSLog(@ "画像データのダウンロード: % @", getResult.dowloadedData);
} else {
NSLog(@ "オブジェクトのダウンロードに失敗、エラー: % @" 、task.error);
}
nilを返します。}];
// [getTask waitUntilFinished];
// [リクエストキャンセル];
// イメージダウンロードリクエストを作成します。
// examplebucketなどのバケット名と、exampledir/exampleobject.txtなどのオブジェクトの完全パスを指定します。 バケット名をフルパスに含めないでください。
GetObjectRequest get = new GetObjectRequest("examplebucket", "exampledir/exampleobject.txt");
// 画像を処理します。
request.setxOssProcess("image/resize,m_fixed,w_100,h_100");
OSSAsyncTask task = oss.asyncGetObject(get, new OSSCompletedCallback<GetObjectRequest, GetObjectResult>() {
@オーバーライド
public void onSuccess(GetObjectRequest request, GetObjectResult result) {
// リクエストが成功しました。
InputStream inputStream = result.getObjectContent();
byte[] buffer = new byte[2048];
int len;
try {
while ((len = inputStream.read(buffer)) ! = -1) {
// ダウンロードしたデータを処理します。
}
} catch(IOException e){
e.printStackTrace();
}
}
@オーバーライド
public void onFailure(GetObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 発生した例外を処理します。 独自のコードを追加できます。
}
});
画像スタイルを追加
イメージスタイルを指定して、指定したスタイルでさまざまなIMGパラメータをカプセル化し、そのスタイルを使用して一度に複数のイメージを処理できます。 次のサンプルコードは、一般的なプログラミング言語のOSS SDKを使用してイメージスタイルを使用してイメージを処理する方法の例を示しています。 他のプログラミング言語のOSS SDKを使用してイメージスタイルを使用してイメージを処理する方法の詳細については、「概要」をご参照ください。
com.aliyun.oss.*;
impor t com.aliyun.oss.com mon.auth.*;
com.aliyun.oss.mo del.GetObjectRequestをインポートします。java.io. ファイルをインポートします。public classデモ {
public static void main(String[] args) 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";
// オブジェクトのフルパスを指定します。 バケット名をフルパスに含めないでください。
文字列objectName = "exampleobject.jpg";
// 処理した画像を保存するフルパスを指定します。 例: D :\\ localpath\\example-new.jpg 同じ名前のファイルがすでにパスに存在する場合、処理されたイメージはファイルを上書きします。 そうでなければ、処理された画像はパスに保存される。
文字列pathName = "D :\\ localpath\\example-new.jpg";
// Create an OSSClient instance.
OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);
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 (Exception e) {
System.out.println("Caught an OSSException, which means your request made it to OSS, "
+ "しかし、何らかの理由でエラー応答で拒否されました。");
System.out.println("エラーメッセージ:" + oe.getErrorMessage());
System.out.println("エラーコード:" + oe.getErrorCode());
System.out.println("リクエストID:" + oe.getRequestId());
System.out.println("ホストID:" + oe.getHostId());
} catch (ClientException e) {
System.out.println("Caught an ClientException, which means the client encountered "
+ "a serious internal problem while trying to communicate with OSS, "
+ 「ネットワークにアクセスできないなど」;
System.out.println("エラーメッセージ:" + ce.getMessage());
} 最後に{
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';
}
OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$accessKeyId = getenv("OSS_ACCESS_KEY_ID");
$accessKeySecret = getenv("OSS_ACCESS_KEY_SECRET");
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "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";
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $end point);
// 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。
// $ossClient->uploadFile($bucket、$object、"D :\\ localpath\\exampleobject.jpg");
// カスタム画像スタイルを使用して画像を処理します。
// yourCustomStyleNameを、OSSコンソールで作成したイメージスタイルの名前に置き換えます。
$style = "style/yourCustomStyleName";
$options=配列 (
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、
// バケットの名前を指定します。
bucket: 'yourbucketname'
});
// 画像のサイズを100 × 100ピクセルに変更します。
async関数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) で指定された位置から100x100ピクセルに画像をトリミングします。
async関数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関数rotate() {
try {
const result = await client.get('example.jpg ', './example-rotate.jpg ', { process: 'image/rotate,90'});
} catch (e) {
console.log(e);
}
}
rotate()
// イメージをシャープにします。 パラメーターを100に設定します。
async関数sharpen() {
try {
const result = await client.get('example.jpg ', './example-sharpen.jpg ', { process: 'image/sharpen,100'});
} catch (e) {
console.log(e);
}
}
sharpen()
// 画像に透かしを追加します。
async関数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関数の形式 () {
try {
const result = await client.get('example.jpg ', './example-format.jpg ', { process: 'image/format,png'});
} catch (e) {
console.log(e);
}
}
format()
// イメージ情報を取得します。
async関数info() {
try {
const result = await client.get('example.jpg ', './example-info.txt ', {process: 'image/info'});
} catch (e) {
console.log(e);
}
}
info()
# -*-コーディング: utf-8 -*-
osのインポート
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
# バケットの名前を指定します。
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')
# ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket.
bucket_name = 'examplebucket'
# ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのパスを指定する必要があります。 例: Example /example.jpg
key = 'exampledir/example.jpg'
# 処理されたイメージの名前を指定します。
new_pic = 'exampledir/newexample.jpg'
# 処理するイメージが指定されたバケットに存在しない場合は、バケットのローカルパスに保存されているイメージをアップロードする必要があります。
# bucket.put_object_from_file (キー、'D :\\ localpath\\example.jpg ')
# カスタム画像スタイルを使用して画像を処理します。 yourCustomStyleNameをOSSコンソールで作成したイメージスタイルの名前に設定します。
style = 'style/yourCustomStyleName'
# 処理した画像をローカルコンピューターに保存します。
bucket.get_object_to_file(key, new_pic, process=style)
# イメージが処理された後、イメージが不要になった場合は、バケットからソースイメージを削除できます。
# bucket.de lete_object (キー)
# 処理済みの画像が不要になった場合は、画像を削除できます。
# os.remove(new_pic)
パッケージメイン
import (import (import)
"fmt"
「github.com/aliyun/aliyun-oss-go-sdk/oss」
"os"
)
func HandleError (エラーエラー) {
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("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
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>
名前空間listaCloud::OSSを使用します。int main(void)
{
/* OSSへのアクセスに使用されるアカウントに関する情報を初期化します。 */
/* バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 */
std::string Endpoint = "yourEndpoint";
/* ソースイメージが保存されているバケットの名前を指定します。 例: examplebucket. */
std::string BucketName = "examplebucket";
/* ソースイメージの名前を指定します。 イメージがバケットのルートディレクトリに保存されていない場合は、イメージのフルパスを指定する必要があります。 例: exampledir/example.jpg */
std::string ObjectName = "exampledir/example.jpg";
/* ネットワークリソースなどのリソースを初期化します。 */
InitializeSdk();
ClientConfiguration conf;
/* 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 */
auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
OssClientクライアント (Endpoint, credentialsProvider, conf);
/* 画像スタイルを使用して画像を処理します。 yourCustomStyleNameを、手順1で作成したイメージスタイルの名前に置き換えます。 */
std::string Process = "style/yourCustomStyleName";
GetObjectRequestリクエスト (BucketName, ObjectName);
request.setProcess (プロセス);
auto outcome = client.GetObject (リクエスト);
if (outcome.isSuccess()) {
std::cout << "画像は正常に処理されました。" << std::endl;
} else {
std::cout << "イメージの処理に失敗しました。 エラーコード: " << outcome. Error (). code ()
<< ", Message: " << outcome.error().Message()
<< ", RequestId: " << outcome.error().RequestId() << std::endl;
}
/* ネットワークリソースなどのリソースを解放します。 */
ShutdownSdk();
0を返します。}
#include "oss_api.h"
# 「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";
void init_options(oss_request_options_t * オプション)
{
options->config = oss_config_create(options->pool);
/* char * stringを使用して、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"));
/* 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);
/* Create and initialize options. このパラメーターには、エンドポイント、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();
0を返します。}
OSS APIの使用
ビジネスで高度なカスタマイズが必要な場合は、RESTful APIを直接呼び出すことができます。 APIを直接呼び出すには、コードに署名計算を含める必要があります。
GetObjectリクエストにIMGパラメーターまたはイメージスタイルパラメーターを追加して、イメージを処理できます。 詳細については、「GetObject」をご参照ください。
IMGパラメータの追加
リクエストの例
GET /oss.jpg?x-oss-process=image/resize,w_100 HTTP/1.1 ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com 日付: 10月28日金曜日2022 06:40:10 GMT 権限付与: OSS qn6qrrqxo2oawuk53otf ****:UNQDb7GapEgJkcde6OhZ9J ****
画像スタイルパラメータの追加
リクエストの例
GET /oss.jpg?x-oss-process=style/styleexample HTTP/1.1 ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com 日付: 10月28日金曜日2022 06:40:10 GMT 権限付与: OSS qn6qrrawuk53oqxo2otf ****:UNapEgQDb7GJkcde6OhZ9J ****
参考資料
デフォルトでは、IMGは処理済み画像を保存しません。 ただし、OSSでは、saveasパラメーターをIMGリクエストに追加して、処理されたイメージをオブジェクトとして指定されたバケットに保存できます。 詳細については、「処理済みイメージの保存」をご参照ください。