2011-11-04 7 views
10

Imagick PHP apis(Imagickのコマンドラインバージョンではありません)を使用して作物と画像を中心にしています。ImagickとPHPを使用して重力で中心を切り出す

本質的に私は、APIを使用してコマンドライン経由で可能なことをしたいと思います。コマンドラインでの例を次に示します。 http://www.imagemagick.org/Usage/crop/#crop_gravity

ここに私がやっていることはありますか?

 $this->imagickObj->setGravity(\Imagick::GRAVITY_CENTER); 
     $this->imagickObj->cropImage(300,250,0,0); 
     $this->imagickObj->setImagePage(0, 0, 0, 0); 

なぜクロッピングする前にイメージに適用されないのですか? http://www.php.net/manual/en/function.imagick-setgravity.phpはオブジェクト(この場合は単一のイメージ)に適用する必要があると言います...

答えて

3

サポートがないように、ここで、見える私はそれをやってしまった方法です: https://gist.github.com/1364489

+0

これらの計算をどのように定義しますか? – j0k

0

ImagemagickオブジェクトのcropImage()メソッドの3番目と4番目の引数は、作物の左上隅を定義しています。 nullとして渡してみてください(実際にはsetGravity()メソッドを使用してください)。実際には、クロップが行われる場所を計算してcropImage()メソッドにポップする必要があります(setGravity()を気にしないでください)。

私はPHPを使ってImagemagickの周りに多くのコーディングを行いました。Imagemagick拡張機能の恐ろしい文書のために、私はnice'dコマンドラインコールをたくさん作りました。

+0

ありがとうございました。 null、nullは機能しません。 私は数学を行うことができますが、可能であれば組み込みを利用することを好むでしょう。 CLIを避けるためには、いくつかの理由があります。その1つはパフォーマンスです(イメージ操作サービスを書くことはかなり重くなります)。 – rynop

+0

CLIを使って書いた主なサービスは、1日に何千枚もの画像を処理します。また、インテルCore i5 760のLinux上で4GBのRAMを搭載し、いくつかのWebサイトにも対応しています。ありがとう。 – Crontab

+0

ありがとう。私はちょうど数分かかりましたので、数学をすることに決めました。内蔵の重力を使用する方法が分かっているかどうかを確認するために、この質問を数日間開いたままにしておきます。 – rynop

12

その質問をし、元の人のためではなく、将来の訪問者のための遅すぎる、正解は

bool Imagick::cropThumbnailImage (int $width , int $height)です

申し訳ありませんが返信は遅くなりましたが、私もあと30分前に立ち往生し、最初のGoogleの結果はここにリダイレクトされました。他の人と同じことは起こりません。

+0

これは常に作物の中心ですか?重力を変えたいのですが? – rynop

+0

はい、それは常に中心重力で切り抜きます。実際には、最初に高さや幅に合わせてイメージを拡大し、中央から切り抜いてイメージのサムネイルを作成します。これは、サムネイルを作成するためにFB、ツイッター、グーグル、および他の多くのサイトで使用されているのと同じロジックです。重力を変更する必要がある場合は、http://php.net/manual/en/imagickで定義されているように、 'bool Imagick :: cropImage(int $ width、int $ height、int $ x、int $ y)'を使用してください。 cropimage.php –

関連する問題