2013年12月24日火曜日

PHPフレームワークのPhalconで、写真ストレージクラウドのCloudinaryと連携

PHPフレームワークのPhalcon(1.2.4)で、写真ストレージクラウドのCloudinaryと連携です。Cloudinaryは、お気に入りのクラウド画像編集&ストレージサービスで、過去にも、Django、Ruby on Railsと試してきました。今回は、Phalconでの試み。Phalcon限定と言うよりは、PHP全般で利用できると思います。

こちらから、ダウンロードして解凍してできた、srcフォルダ内の3つのファイル(Cloudinary.phpUploader.phpApi.php)をインクルードして利用すればOKです。Swift Mailerの時と同様、/vendor/cloudinary/ に配置しました。

画像の登録
require_once('../vendor/cloudinary/src/Cloudinary.php'); 
require_once('../vendor/cloudinary/src/Uploader.php'); 
require_once('../vendor/cloudinary/src/Api.php'); 
\Cloudinary::config(array(
 "cloud_name" => "sample_cloud_name",
 "api_key" => "sample_api_key",
 "api_secret" => "sample_api_secret"
));
$ret = \Cloudinary\Uploader::upload($file->getTempName());
アップロードに成功すると、$ret には、以下のような配列データが返ってきます。とりあえず、public_id だけ、データベースに保持しておけば、画像を呼び出せます。
Array
(
  [public_id] => sample
  [version] => 1312461204
  [width] => 864
  [height] => 576
  [format] => jpg
  [bytes] => 120253
  [url] => http://res.cloudinary.com/demo/image/upload/v1371281596/sample.jpg
  [secure_url] => https://res.cloudinary.com/demo/image/upload/v1371281596/sample.jpg
)
画像の編集・表示
require_once('../vendor/cloudinary/src/Cloudinary.php'); 
require_once('../vendor/cloudinary/src/Uploader.php'); 
require_once('../vendor/cloudinary/src/Api.php'); 
\Cloudinary::config(array(
 "cloud_name" => "sample_cloud_name",
 "api_key" => "sample_api_key",
 "api_secret" => "sample_api_secret"
));
$img = cl_image_tag($public_id, array( "width" => 100, "height" => 100, "crop" => "fill" )); 
画像の削除
require_once('../vendor/cloudinary/src/Cloudinary.php'); 
require_once('../vendor/cloudinary/src/Uploader.php'); 
require_once('../vendor/cloudinary/src/Api.php'); 
\Cloudinary::config(array(
 "cloud_name" => "sample_cloud_name",
 "api_key" => "sample_api_key",
 "api_secret" => "sample_api_secret"
));
$api = new \Cloudinary\Api();
$api->delete_resources(array($public_id));
わかりやすくするため、インクルード部分を重複して書いていますが、実際に利用する場合は、コンポーネントとしてまとめた方が良いと思います。

実際に設定してみたサイトがこちら



参考サイト
PHP integration(Cloudinary Documentation)
Django、Ruby on RailsでのCloudinary連携

0 件のコメント:

コメントを投稿