- ベストアンサー
ImageMagickをインストールして実行する際にClass 'Imagick' not foundというエラーが出る
- ImageMagickをインストールして下記ソースを実行したところ「Class 'Imagick' not found in ~ on line 8」というエラーが出ました。
- インストール手順に従って別のDLLファイルをダウンロードしてもエラーは解消されず、phpinfo()でImageMagickを確認することもできませんでした。
- ImageMagickを使用してオリジナルの顔画像を作成したいと考えています。どのようにすればこのエラーを解決できるでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
基本的にはアバターの各部品の合成というものであれば、元の画像をそのままマージするだけなので、GDでも遜色なく出来るはずです。アニメーションGIFを使うとかといったことがなければ。(どちらにしてもアニメーションGIFを使うということは色数255色っていう制限かかるので、また別の大変さがありそう。) とりあえず三つの同じ大きさの画像をマージするというサンプルを書きました。 <?php //とりあえず三つの画像をロード $img1 = imagecreatefrompng('image1.png'); //100 x 100の画像 $img2 = imagecreatefrompng('image2.png'); //100 x 100の画像 $img3 = imagecreatefrompng('image3.png'); //100 x 100の画像 //FFFFFF(白)の色を作成 $white1 = imagecolorallocate($img1, 255, 255, 255); $white2 = imagecolorallocate($img2, 255, 255, 255); $white3 = imagecolorallocate($img3, 255, 255, 255); //白の色を透過色とする。(これらは白じゃなくても使っていない色とかでもOK) imagecolortransparent($img1, $white1); imagecolortransparent($img2, $white2); imagecolortransparent($img3, $white3); //それらをひとつの画像に統合($img1を背景とすると。) imagecopymerge($img1, $img2, 0, 0, 0, 0, 100, 100, 100); imagecopymerge($img1, $img3, 0, 0, 0, 0, 100, 100, 100); //マージした後いらなくなった画像リソースをとりあえず解放 imagedestroy($img2); imagedestroy($img3); //画像を表示する header('Content-Type: image/png'); imagepng($img1); ?> こんな感じでしょうか。私も仕事でバリバリ使っているというわけではないので、実際もっとよい書き方とかあるかもしれませんが、一応これで画像の合成が出来ます。 imagecopymerge(またはimagecopy)の引数を調整すれば、合成時の座標位置を変更できたりします。
その他の回答 (1)
- hogehoge78
- ベストアンサー率80% (433/539)
今現状で、Windowsで動作するDLLは、5.3.x以上になるかと思いますので、 環境を作り直す必要があるかと思います。 私がお伝えしたImageMagickの導入方法を解説しているサイトの元の記事を見たら 【元の記事】http://kyle-in-jp.blogspot.com/2008/04/windowsimagemagickphp.html 「XAMPP1.7.3」での導入方法も記載されておりましたが、XAMPPの1.7.3は、 PHPのバージョンが「5.3.1」です。 ちなみに、前回のご質問で、GDが正常に動作しないとのことでしたが、どのようなソースを書きましたか? 単純な合成だけであれば、GDでも出来ますし、マニュアルや解説サイトも豊富にあります。 サンプルのスクリプトがうまく動かなかったというだけでスルーしてしまうのは少しもったいないので、 GDのほうを先に動くようにしたほうがよいと思います。
お礼
度々のご回答ありがとうございます。 確かに動かなくてスルーしていました。他のページを調べていたらImageMagickの方がより画質のよいものができるような事が書かれていたので、気持ちはImageMagickでした。 前回の質問で正常に動作しなかったソースは下記の(1)です。 おっしゃる通りにしたいと思い、今実行したら正常に表示されました。 不思議ですが、hogehoge78さんのおっしゃる通りにしてみてよかったです。 ちなみにヤフーのようなクオリティーの高いものを作るのは、GDでも可能なのでしょうか? (1)button.php <?php header("Content-type: image/png"); $string = $_GET['text']; $im = imagecreatefrompng("test1.png"); $orange = imagecolorallocate($im, 220, 210, 60); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; imagestring($im, 3, $px, 9, $string, $orange); imagepng($im); imagedestroy($im); ?>
お礼
ありがとうございます。 サンプルまでいただけるとは思いませんでした。 実行してみたら成功しました。 アニメーションまで求めていなかったので、おっしゃる通りGDでも行けると思いました。 あとは部分的なパーツを前面に出したり人の形の背面に表示するのが課題ですが、 もっとGDを勉強していこうと思います。 道が開けました。 本当にありがとうございました。