画像処理は、Object Storage Service (OSS) が提供する、大規模で安全、低コスト、高信頼性の画像処理サービスです。画像を OSS にアップロードした後、シンプルな RESTful インターフェイスを使用して、インターネットに接続されたデバイスからいつでもどこでも画像を処理できます。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。同じリージョン内の他の Alibaba Cloud サービスから OSS にアクセスするには、内部エンドポイントを使用します。サポートされているリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名またはセキュリティトークンサービス (STS) を使用して OSSClient インスタンスを作成する場合は、「OssClient の作成」をご参照ください。
サポートされている画像処理パラメーターの詳細については、「画像処理」をご参照ください。完全なサンプルコードについては、「GitHub」をご参照ください。
画像処理パラメーターを使用した画像の処理
単一の画像処理パラメーターで画像を処理し、ローカルファイルとして保存する
<?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-resize.jpg。指定したローカルファイルが存在する場合、上書きされます。存在しない場合は、新しいファイルが作成されます。 // 完全なパスを指定せずに、example-resize.jpg のようなローカルファイル名のみを指定した場合、ファイルはデフォルトでサンプルプログラムが配置されているプロジェクトのローカルパスに保存されます。 $download_file = "D:\\localpath\\example-resize.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"); // イメージを幅と高さが 100 px の固定サイズに変更します。 $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" ); // 処理後のイメージを example-resize.jpg という名前でローカルパスに保存します。 $ossClient->getObject($bucket, $object, $options); // イメージ処理後、ソースイメージが不要になった場合は、バケットから削除します。 // $ossClient->deleteObject($bucket, $object);複数の画像処理パラメーターで画像を処理し、ローカルファイルとして保存する
複数の画像処理パラメーターを使用する場合は、スラッシュ (/) で区切ります。
<?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"); // イメージを幅と高さが 100 px の固定サイズに変更し、90 度回転させます。 $style = "image/resize,m_fixed,w_100,h_100/rotate,90"; $options = array( OssClient::OSS_FILE_DOWNLOAD => $download_file, OssClient::OSS_PROCESS => $style); // 処理後のイメージを example-new.jpg という名前でローカルパスに保存します。 $ossClient->getObject($bucket, $object, $options); // イメージ処理後、ソースイメージが不要になった場合は、バケットから削除します。 // $ossClient->deleteObject($bucket, $object);
イメージスタイルを使用した画像の処理
OSS コンソールでイメージスタイルを作成して、複数の画像処理パラメーターをカプセル化できます。その後、そのスタイルを使用して画像をバッチ処理できます。詳細については、「イメージスタイル」をご参照ください。
以下のコードは、イメージスタイルを使用して画像を処理する方法を示しています。
<?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); 画像処理の永続化
デフォルトでは、画像処理サービスは処理された画像を保存しません。ImgSaveAs 操作を使用して、処理された画像をソースバケットに保存できます。
以下のコードは、画像処理の永続化操作を実行する方法を示しています。
<?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";
// 宛先オブジェクトの完全なパスを設定します。例:example-new.jpg。
$save_object = "example-new.jpg";
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
$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");
// イメージを幅と高さが 100 px の固定サイズに変更し、90 度回転させます。
$style = "image/resize,m_fixed,w_100,h_100/rotate,90";
$process = $style.
'|sys/saveas'.
',o_'.base64url_encode($save_object).
',b_'.base64url_encode($bucket);
// 処理後のイメージを example-new.png という名前で現在のバケットに保存します。
$result = $ossClient->processObject($bucket, $object, $process);
// 処理結果を出力します。
print($result);画像処理パラメーターを含むファイルの署名付き URL の生成
非公開ファイルへのアクセス URL は署名する必要があります。OSS は、署名付き URL に画像処理パラメーターを追加する方法をサポートしていません。非公開ファイルを処理するには、署名に画像処理パラメーターを追加する必要があります。以下のコードに例を示します。
<?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";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// 画像処理パラメーターを含む署名付き URL を生成します。URL は 3600 秒間有効です。ブラウザを使用して URL にアクセスできます。
$timeout = 3600;
$options = array(
// イメージを幅と高さが 100 px の固定サイズに変更します。
OssClient::OSS_PROCESS => "image/resize,m_fixed,h_100,w_100" );
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("rtmp url: \n" . $signedUrl); ウォーターマークパラメーターを含むファイルの署名付き URL を生成するには、次の例をご参照ください。
<?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";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// ウォーターマークパラメーターを含む署名付き URL を生成します。URL は 3600 秒間有効です。ブラウザを使用して URL にアクセスできます。
$timeout = 3600;
function base64url_encode($data)
{
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
// ウォーターマークのテキスト (例: Hello World) またはウォーターマーク画像の完全なパス (例: panda.jpg) を設定します。
// 画像にウォーターマーク画像を追加する場合、ウォーターマーク画像がソース画像と同じバケットに保存されていることを確認してください。
$content = "Hello World";
$string = base64url_encode($content);
$options = array(
// 画像にウォーターマークを追加します。
OssClient::OSS_PROCESS => "image/watermark,text_".$string
);
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print("rtmp url: \n" . $signedUrl);