• 締切済み

imagemagickでリサイズ

環境は以下です。 php 4.4.9 imagemagick 6.0.7 php imagick 0.9.11 $handle=imagick_readimage("sample.jpg"); imagick_resize($handle,150,150,IMAGICK_FILTER_UNKNOWN,1); imagick_writeimage($handle,getcwd()."./sample.jpg"); この部分なんですが、まずイメージをリードした時点で$handleにはResource id #10というものが 入っているんですが、これのせいで以後の処理ができないんでしょうか? そうならこれの対処する方法をご教授お願いします。 ちなみに、上記のプログラムのリサイズとファイルの書込みはコメントアウトしないと500エラーがでてしまいます。 PHP初心者の為、なにがなんだかわからなくて。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

回答No.1

すみません。自己解決しました。 ありがとうございました。

関連するQ&A

  • ImageMagickを(1)のページを参考にインストールして下記ソー

    ImageMagickを(1)のページを参考にインストールして下記ソース(2)を実行したところ「Class 'Imagick' not found in ~ on line 8」が出ました。line 8は「$first = new Imagick('sf.jpg');」と書いています。 ちなみに、(1)のページの内容と違う表示になった部分がありました。それは、(1)のページの「5.apacheの再起動(php.iniいじったから)」の項のところでapacheの停止と開始で正常なメッセージが出たのです。 ですが、(2)のソースを実行しても同じエラーが出るので、一応手順にあわせて違うDLLファイルをダウンロードするなどの手順で進めました。 最後にphpinfo();で「ImageMagick」の言葉を探しましたが、画面上にはありませんでした。しかし、「ソースの表示」でソースを開いて検索したらpathの指定で「ImageMagick」の言葉を使っていました。 やりたい事は、顔のパーツの組み合わせでオリジナルの顔画像が作れるヤフーのアバターのようなアプリを作りたいです。 そこで、アドバイスをいただいてImageMagickでアプリを作ろうと考えました。 どうしたらこのエラーを解決できるのでしょうか? (1) http://gecko.hp2.jp/2010/04/20/%E3%80%90php%E3%80%91imagemagick%E3%82%92php%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%8D%E3%81%AE%E3%83%A1%E3%83%A2/ (2) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja" dir="ltr"> <head> <title>sample372</title> </head> <body> <?php $first = new Imagick('sf.jpg'); $second = new Imagick('sample3b.jpg'); $first->compositeImage($second, Imagick::COMPOSITE_DEFAULT, 10, 10); $first->writeImage('sample372a.jpg'); ?> <img src="sample372a.jpg" /> </body> </html> ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3

    • ベストアンサー
    • PHP
  • Image Magickの関数が使えない

    PHPにてImageMagickの関数を使おうと思ったのですが使えません。 どうすれば使えるのでしょうか・・・? imagick_begindraw()を使ってみると Call to undefined function imagick_begindraw() とエラーが返ってきて使うことができません。 extにはphp_imagick.dllが入っており、 php.iniではphp_imagick.dllの部分をコメントアウトしております。 phpinfoで見てみるとImage Magickの部分がありません。 (gdやimapはちゃんとあります) ちなみに環境はXAMPPです。

    • ベストアンサー
    • PHP
  • 携帯画像をPHPでリサイズしたい。

    下記サイトに携帯画像のリサイズのPHPサンプルがあります。 SSIで読み込むようにしてありますが、 <?php $_GET['file']='top_btn01.jpg';require_once("trans.php"); ?> として、PHPを読み込んでいます。 この状態なら上手く画像がリサイズされて表示するのですが、 1ページに何枚もリサイズしたい画像があって、 <?php $_GET['file']='top_btn01.jpg';require_once("trans.php"); ?> <?php $_GET['file']='top_btn02.jpg';require_once("trans.php"); ?> <?php $_GET['file']='top_btn03.jpg';require_once("trans.php"); ?> と複数指定すると2枚目以降から表示できず、 (Fatal error: Cannot redeclare encode() (previously declared)とエラーが出ます。 色々調べたりしましたが全く原因がわかりません。 2枚以上指定しても問題なく表示するにはどのようにしたら良いでしょうか? まったく分からず困っています。 大変申し訳ないですがよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ImageMagick (Magick++)の設定

    こんにちは。 標題のとおり、C++でImageMagickの機能を使うため、Magick++の使い方を勉強中です。 ・ImageMagickをインストール(ImageMagick-6.7.8-2-Q16-windows-dll) ・Magick++.hをインクルード ・ImageMagickインストールフォルダ内のlibフォルダへの参照設定 ・開発環境はVisualStudio2008 した上で、下記のサンプルコードを動かしたところ、ビルドはできるのですが、 画像の読み込み部で 「・・・でハンドルされていない例外が発生しました: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。」 とのアラーとが出、終了してしまいます。 パスの指定方法が悪いのか、そもそもの環境設定で不足があるのか、分からず困っております。 この解決策をアドバイス頂けないでしょうか。 よろしくお願いいたします。 ------------------------------------------------ #include <Magick++.h> #include <iostream> using namespace std; using namespace Magick; int main(int argc,char **argv) { InitializeMagick(*argv); // Construct the image object. Seperating image construction from the // the read operation ensures that a failure to read the image file // doesn't render the image object useless. Image image; try { // Read a file into image object image.read( "C:\\girl.gif" );←【ここで終了します。】 // Crop the image to specified size (width, height, xOffset, yOffset) image.crop( Geometry(100,100, 100, 100) ); // Write the image to a file image.write( "C:\\x.gif" ); } catch( Exception &error_ ) { cout << "Caught exception: " << error_.what() << endl; return 1; } return 0; }

  • PHPでの非同期処理後、妙な警告が表示される

    閲覧いただきありがとうございます。 どうしても解決に困っているので、知恵を貸してください。 現在、PHPのcurl_multi関数を使用した、HTTPの非同期処理を実装しています。 参考にしたサイトは、下記URLです。 http://qiita.com/Hiraku/items/1c67b51040246efb4254 上記サイトに掲載されているソースをそのまま使用し、execHttpMultiThread関数を作成しました。 URLの配列とタイムアウト時間を引数とした関数です。 また、念のためfunctionの頭から最後までをtry~catchで囲みました。 上記関数を利用した、以下のような処理を書いて実行したところ、妙なエラーが発生しました。 ********************** 【処理 test1.php】 echo 'マルチスレッド処理開始'; $http_list = array( 'http://hoge.jp/test2.php?v=multi_01', 'http://hoge.jp/test2.php?v=multi_02', 'http://hoge.jp/test2.php?v=multi_03', ); execHttpMultiThread($http_list, 30); echo 'マルチスレッド処理終了'; 【処理 test2.php】 // GETされた値を取得 $value = $_GET['v']; // 10秒間スリープ sleep(10); // ログ出力 ※ログを出力させる自作関数です writeLogInfo(date('Y-m-d H:i:s'). ' 処理が完了しました:'. $value, 'test', 'ThreadTest'); ********************** 【表示されるエラー】 マルチスレッド処理開始 Warning: (null)(): 12 is not a valid cURL handle resource in Unknown on line 0 Warning: (null)(): 13 is not a valid cURL handle resource in Unknown on line 0 Warning: (null)(): 14 is not a valid cURL handle resource in Unknown on line 0 Warning: (null)(): 12 is not a valid cURL handle resource in Unknown on line 0 Warning: (null)(): 13 is not a valid cURL handle resource in Unknown on line 0 Warning: (null)(): 14 is not a valid cURL handle resource in Unknown on line 0 ********************** 警告が出ているのは分かるのですが、関数名・ファイル名・行数など 何も書かれていないため、まったく原因が分かりません。 マルチスレッド関数を実行した後、表示させたいメッセージが表示されていないため 関数から処理が帰ってきていないだろうことは分かるのですが・・・ 皆さんの知恵を貸していただけないでしょうか。 よろしくお願いいたします!

    • ベストアンサー
    • PHP
  • phpで画像のリサイズ表示

    質問お願い致します。 phpで画像のリサイズをして表示させたいと思っています。 色々調べた結果下記のサンプルコードを入れてみました。 <?php header("Content-Type:image/jpeg"); $imgpath = "http://*****************.jpg"; $im_info = getimagesize($imgpath); $src_im = ImageCreateFromJPEG($imgpath); $dst_im = imagecreate($im_info[0]/2,$im_info[1]/2); imagecopyresampled($dst_im,$src_im,0,0,0,0,$im_info[0]/2,$im_info[1]/2,$im_info[0],$im_info[1]); imagejpeg($dst_im); ?> しかし「画像ファイル "http://*****************.php" は壊れているため、表示できませんでした。」となってしまいました。 色々試した結果、下記の記述だけでも「画像ファイル "http://*****************.php" は壊れているため、表示できませんでした。」と表示されてしまいました。 <?php header("Content-Type:image/jpeg"); ?> 「header("Content-Type:image/jpeg");」を使用する際にはphp.iniの書き換えをするのかと調べてみたのですが、結局原因はわかりませんでした。 サーバーはさくら(スタンダードコース)です。 PHPは「PHP 5.2.17」になります。 どなたかお知恵を貸して頂けないでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 画像を容量を軽くしたい

    phpのvarは5.2.5 GDライブラリを使ってアップしています jpg、gif、pngをアップロードするときに画像の容量を軽くしたいです 画像についているメタ情報を削除する方法はありますか? ImageMagickでは画像のEXIF 情報や余分なコメント領域を削除できますがそれと同じようなことをしたいです よろしくお願いします

    • ベストアンサー
    • PHP
  • [PHP]GDを利用した画像リサイズについて

    [PHP]GDを利用した画像リサイズについて GDを利用した画像リサイズ処理を行うクラスを作ったのですが、 以下のようなエラー(文字化け)が出てしまい画像出力することができません。 有識者の方、どうか知恵をお貸しください。宜しくお願い致します。 ????JFIF??;CREATOR: gd-jpeg v1.0 (using IJG JPEG v70), quality = 75 ??C    $.' ",#(7),01444'9=82<.342??C  2!!22222222222222222222222222222222222222222222222222??II"?? ???}!1AQa"q2???#B??R??$3br? %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz??????????????????????????????????????????????????????????????????????????? ???w!1AQaq"2?B???? #3R?br? -------- 以下省略 ---------- ◆作成したPHPファイル ・test.php <?php require_once 'Image.php'; $path = './400x300.jpg'; $r = new Image($path, 75); $r->resize(75); ?> ・Images.php <?php class Image{ var $new_width; var $path; function Image($path, $new_width){ @header("Content-type: image/jpeg"); $this->path = $path; $this->new_width = $new_width; } function resize(){ global $new_width; global $path; // 画像パス $image = imagecreatefromjpeg($this->path); // 画像のサイズを取得 $width = 150; $height = 150; $rate = $this->new_width / $width; $new_height = $rate * $height; $thumb = imagecreatetruecolor($this->new_width, $new_height); imagecopyresized($thumb, $image, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); // imagecopyresampled($thumb, $image_path, 0, 0, 0, 0, $this->new_width, $new_height, $width, $height); imagejpeg($thumb, null, 75); imagedestroy($image); } } ?> ◆環境と状況 ・サーバ:WindowsXP(XAMPPを利用してローカル環境を構築) ・phpinfo()にて、GD Support=enabled、JPEG Support=enabledを確認 ・ステップ実行(デバック)にてimagejpeg($thumb, null, 75);まで問題なく実行可能。  ※imagejpeg($thumb, null, 75);実行後上記文字列が出力される。 ・コメントアウト個所のimagecopyresampledでも動作結果は同じ。 ・参考にしたサイト  http://goodjob.boy.jp/chirashinoura/id/79.html 恐れ入りますが、ご回答お願い致します。

    • ベストアンサー
    • PHP
  • 画像の先読み

    画像の先読み 拡大画像の表示場所とサムネイルの表示場所がありサムネイルをクリックすると拡大画像の場所にクリックしたサムネイルが拡大表示されるものを作っています。 以下のソースで試しており動作は問題ないのですが動作がぎこちないです。 具体的にはサムネイルをクリックすると拡大画像の場所がフェードアウトしフェードインします。 ※ここまでは正常 フェードインしたかと思いきやクリックする前の画像が1秒程表示されその後クリックした画像に切り替わる感じでフェードの効果が全く無意味になってしまいます^^; 事情があり画像の出力をphpで行っているのが原因かと思ったのですが単純にキャッシュの問題かとも思い画像の先読みなどを組み込めればいいのですがどのようにすれば可能でしょうか? [html] <p id="imgMain"><img src="resize.php?file=/imgimg01.jpg" alt="" id="target" /></p> <ul id="gallery"> <li><a href="resize.php?file=/img/img01.jpg" ><img src="resize.php?file=/img/img01.jpg&amp;x=173" alt="" /></a></li> <li><a href="resize.php?file=/img/img02.jpg"><img src="resize.php?file=/img/img02.jpg&amp;x=173" alt="" /></a></li> <li><a href="resize.php?file=/img/img03.jpg"><img src="resize.php?file=/img/img03.jpg&amp;x=173" alt="" /></a></li> </ul> [js] $(document).ready( function() { $("#gallery a img") .fadeTo(1, 1) .hover( function() { $(this).fadeTo(200, 0.5); }, function() { $(this).fadeTo(500, 1); } ) $("#gallery a").click(function() { var changeSrc = $(this).attr("href"); $("#target").fadeOut( "slow", function() { $(this).attr("src", changeSrc); $(this).fadeIn(); } ); return false; }); });

  • PHP5.0.5+postgreSQL8.0.4+apache2.0.55 で質問です。

    上記の構成で、PHP単体での動作OK postgreSQL OK apache OK なのですが、apacheを再起動すると下記の警告が出ます。 PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'pgsql.so' in Unknown on line 0 いろいろ調べたのですが、さっぱり分かりません。 また、当然かも知れませんがphp.iniのextension=pgsql.soをコメントアウトすると警告は出ません。 どこを見直せばいいのか教えていただけないでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう