# trim.php # # ■ 導入時にすべきこと ■ # ・PHPをインストール # ・Imagick(またはGmagick、以下Imagickとする)をPHPに導入 # ・ウェブサーバーソフトウェア(Apache、nginxなど)上でPHPが動くようにする # ・このファイルがtrim.txtの場合、拡張子をphpに変更してウェブサーバー上に設置 # ・その設置したファイルがあるディレクトリの上の階層にディレクトリtmpを設ける # ・このプログラムがファイルを書き込めるように、ディレクトリtmpのパーミッションを変更 # GETメソッドでheight,left,top,url,widthの全てに値が入ってきた場合、切り出された画像ファイル名を返す。 # 実際には、jQueryの$.getがファイル名を取得していく。 $height = (int)$_GET['height']; $left = (int)$_GET['left']; $top = (int)$_GET['top']; $url = addslashes(trim((string)$_GET['url'])); $width = (int)$_GET['width']; $is_https = isset($_SERVER['HTTPS']); if ( $height>0 && $left>0 && $top>0 && $url!='' && $width>0 ) { # 切り出すサイズが横または縦が1000ピクセルより大きかったら処理を中止。 if ( $height>1000 || $width>1000 ) die; # とりあえず作業用ディレクトリtmpにファイルを生成。 # 関数timeを使っているのは、生成した画像がきちんと表示されるようにするため。同じファイル名だとブラウザがキャッシュを読んでしまい、生成された画像がきちんと表示されない。 # 画像の切り出しなどの処理は、Imagickに任せる。 $file = "../tmp/".md5($_SERVER['REMOTE_ADDR'].time()).".png"; $o = class_exists('Imagick') ? new Imagick($url) : new Gmagick($url); $o->setFormat('png'); $o->setImagePage(0,0,0,0); $o->cropImage($width,$height,$left,$top); $o->writeImage($file); $o->clear(); $o->destroy(); die($file); } # 以上でjQueryの$.getがアクセスした場合の処理が終了。 # もし画像URLが指定された場合、それをもとに画像を取得。なにもなければサンプル用の画像を使用する。 if ($url=='') $url = 'http'.($is_https?'s':'').'://i-o.io/Photo/sample.png'; ?>