プロが教えるわが家の防犯対策術!

さくらインターネットでImageMagickを使いたいです。

ローカルで正常に動作しているphpファイルをさくらインターネットにアップロードしたところ正常に動かすことが出来ませんでした。
わからなかったのでサポートに問い合わせたところ、以下の返答を頂きました。


こちらの質問
----------------------------------
> 先日「さくらのレンタルサーバ スタンダード」を仮申し込みさせて
> いただきました。
> ImageMagickがインストールされているようなのでPHPでimagickを使って
> 画像処理をしようとしたところimagickがうまく作動していないように思えます。
> (アップロードしたPHPファイルは自分のローカルでは正常に動作しています)。
> imagickで画像処理をする場合、何か特別な設定等があるのでしょうか?
> お手数ですがご解答のほどよろしくお願い致します。

回答
----------------------------------
さくらのレンタルサーバでは Imagemagick は perl のモジュールとしてインストールが行われております。
申し訳ございませんが、PHPのモジュールとしては使用することはできません。ご了承下さいますようお願いいたします。


これは、PHPではImageMagickが使えないということなのでしょうか?
googleで『さくらインターネット ImageMagick』で検索してみたり、OKWave上でも同じ内容の質問を探したりしたのですが、回答者様の回答を見ても理解が出来ず既に丸3日頭を悩ませています。

どなたか初心者でもわかるように回答を頂けないでしょうか。
(どのディレクトリのどのファイルのどこに何をする、等)

調べた内容は以下のサイトです。どれを試してもうまく動作しませんでした。
http://dozo.matrix.jp/pecl/%E3%83%AC%E3%83%B3%E3 …
http://q.hatena.ne.jp/1142475209
http://spilt-milk.net/?p=1400
http://blog.tonx2.com/?p=184

A 回答 (1件)

ImageMagick は、「単独で動作する画像処理プログラム」です。


画像処理するためには、ImageMagickのプログラムを別途立ち上げたりします。
ですが、それではプログラム内から機能を呼び出すのが面倒なので、
各言語毎に、ImageMagick を内部的な機能として使えるようなものがいろいろ用意されています。

「IMagick」も、そういったインターフェースの一つであり、
PHP に IMagick をインストールすることで、
PHPプログラム内から直接 ImageMagick の機能を使えるようになります。

ですが、さくらさんの返答によると、IMagick は入っていないとのことですから、
質問者さんが書かれた「PHPからIMagickを通してImageMagickを使うプログラム」は動作しないのです。

「IMagick のインストール」はサーバ管理者にしかできません。利用者側では不可能です。
ですから、「利用者側の努力で、さくらインターネットで IMagick 用プログラムを動かせるようにする」のは不可能です。


一方、ImageMagick の機能は、上述の「独立したプログラム」で提供されており、それはさくらインターネットにもインストールされているわけですから、
それを直接呼び出すようにすれば、PHP から ImageMagick の機能を使うことは可能です。
そういった利用方法を示しているのが、質問者さんの挙げている最後のリンクである
http://blog.tonx2.com/?p=184
です。PHP の system 関数を使って、ImageMagickのプログラム(convert コマンドなど) を起動しています。
外部プログラムですので、基本的には画像は全てファイルを経由して行い、
処理内容は、コマンド引数で指定します。

convert コマンドの使い方は
http://www.envinfo.uee.kyoto-u.ac.jp/user/susaki …
なんかが参考になるでしょうか。
質問者さんがIMagick で処理しようとした内容も、
convert の引数にあると思います。

たとえば、PHPから
system("convert -geometry 20% image.jpg image_small.jpg");
を実行すれば、image.jpg から、解像度を縦横1/5にした image_small.jpg が作られます。
そんな感じで、system関数を使えば、ImageMagick の機能が使えます。
    • good
    • 0
この回答へのお礼

ありがとうございます、解決しました!

根本的に間違っていたのですね、どおりで参考サイトを見てもわからなかったはずです…
system関数というのもよくわからなかったのですが、mtaka2さんの回答のお陰で全て理解できました。

ありがとうございました!

お礼日時:2010/03/12 12:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!