Image Processing (IMG) は、イメージの処理を支援するためにObject Storage service (OSS) によって提供される、安全で費用対効果の高い信頼性の高いイメージ処理サービスです。 ソースイメージをOSSにアップロードした後、RESTful APIを呼び出して、いつでもどこでも、接続されたデバイスでイメージを処理できます。
使用上の注意
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。 OSSと同じリージョンにある他のAlibaba CloudサービスからOSSにアクセスする場合は、内部エンドポイントを使用します。 OSSリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、OSSエンドポイントを使用してOSSClientインスタンスを作成します。 カスタムドメイン名またはSecurity Token Service (STS) を使用してOSSClientインスタンスを作成する場合は、「OSSClientインスタンスの作成」をご参照ください。
OSSでは、1つ以上のIMGパラメータを使用してイメージを処理できます。 詳細は、「IMGパラメーター」をご参照ください。 完全なサンプルコードについては、『GitHub』をご参照ください。
IMGパラメータを使用した画像処理
単一のIMGパラメータを使用して画像を処理し、処理した画像をローカルコンピュータに保存する
<?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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 $provider = new EnvironmentVariableCredentialsProvider(); // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 $end point = "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=配列 ( "provider" => $provider、 "endpoint" => $end ポイント、 ); $ossClient = new OssClient($config); // 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。 // $ossClient->uploadFile($bucket、$object、"D :\\ localpath\\exampleobject.jpg"); // 画像のサイズを100x100ピクセルに変更します。 $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);
複数のIMGパラメータを使用して画像を処理し、処理した画像をローカルコンピュータに保存する
次のサンプルコードは、複数のIMGパラメーターを使用してイメージを処理する方法の例を示しています。 IMGパラメータは、スラッシュ (/) で区切られます。
<?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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 $provider = new EnvironmentVariableCredentialsProvider(); // バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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"; $config=配列 ( "provider" => $provider、 "endpoint" => $end ポイント、 ); $ossClient = new OssClient($config); // 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。 // $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);
画像スタイルを使用して画像を処理する
OSSコンソールでイメージスタイルを作成し、そのスタイルに複数のIMGパラメーターをカプセル化できます。 次に、スタイルを使用して画像を処理できます。 詳細については、「イメージスタイル」をご参照ください。
次のサンプルコードは、イメージスタイルを使用してイメージを処理する方法の例を示しています。
<?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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを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";
$config=配列 (
"provider" => $provider、
"endpoint" => $end ポイント、
);
$ossClient = new OssClient($config);
// 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。
// $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);
処理された画像を保存する
デフォルトでは、IMGは処理済み画像を保存しません。 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';
}
OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
// ソースオブジェクトのフルパスを指定します。 例: exampledir/exampleobject.jpg バケット名をフルパスに含めないでください。
$object = "exampledir/exampleobject.jpg";
// 処理した画像を保存するフルパスを指定します。 例: example-new.jpg。
$save_object = "example-new.jpg";
関数base64url_encode($データ)
{
rtrimを返します (strtr(base64_encode($data), '+/', '-_'), '=');
}
$config=配列 (
"provider" => $provider、
"endpoint" => $end ポイント、
);
$ossClient = new OssClient($config);
// 処理するイメージが指定されたバケットに存在しない場合は、指定されたバケットにイメージをアップロードする必要があります。
// $ossClient->uploadFile($bucket、$object、"D :\\ localpath\\exampleobject.jpg");
// 画像のサイズを100 × 100ピクセルに変更し、画像を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);
// 処理結果を表示します。
プリント ($結果);
IMGパラメータを含む署名付きオブジェクトURLを生成する
プライベートオブジェクトのURLに署名する必要があります。 署名付きURLの末尾にIMGパラメーターを直接追加することはできません。 プライベートオブジェクトを処理する場合は、署名にIMGパラメーターを追加します。 次のサンプルコードは、署名にIMGパラメーターを追加する方法の例を示しています。
<?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\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.jpg バケット名をフルパスに含めないでください。
$object = "exampledir/exampleobject.jpg";
$config=配列 (
"provider" => $provider、
"endpoint" => $end ポイント、
);
$ossClient = new OssClient($config);
// 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);
次のサンプルコードは、透かしパラメータを含む署名付きオブジェクト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';
}
OSS\Credentials\EnvironmentVariableCredentialsProviderを使用します。OSS\OssClientを使用します。// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
$provider = new EnvironmentVariableCredentialsProvider();
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。
$end point = "yourEndpoint";
// バケットの名前を指定します。 例: examplebucket.
$bucket= "examplebucket";
// オブジェクトのフルパスを指定します。 例: exampledir/exampleobject.jpg バケット名をフルパスに含めないでください。
$object = "exampledir/exampleobject.jpg";
$config=配列 (
"provider" => $provider、
"endpoint" => $end ポイント、
);
$ossClient = new OssClient($config);
// 透かしパラメータを含む署名付きURLを生成します。 URLの有効期間は3,600秒です。 署名付きURLを直接使用して、ブラウザを使用して画像にアクセスできます。
$timeout = 3600;
関数base64url_encode($データ)
{
rtrimを返します (strtr(base64_encode($data), '+/', '-_'), '=');
}
// Hello Worldなどの透かしのコンテンツを指定するか、panda.jpgなどの透かし画像の完全パスを指定します。
// 透かし画像を画像に追加するときは、透かし画像が画像と同じバケットに保存されていることを確認してください。
$content = "Hello World";
$string = base64url_encode($content);
$options=配列 (
// 画像に透かしを追加します。
OssClient::OSS_PROCESS => "image/watermark,text_".$string
);
$signedUrl = $ossClient->signUrl($bucket、$object、$timeout、"GET" 、$options);
印刷 ("rtmp url: \n") 。 $signedUrl);