電子書籍の厳選無料作品が豊富!

「imagecreatefromjpeg」関数を使用して、以下のような新規JPEG画像の作成をしようと試みています。

$image = imagecreatefromjpeg("xxxx.jpg");

この記述がされたphpファイルを実行すると、400KB程度の対象ファイル(xxxx.jpg)なら良いのですが、それ以上になってくると、別ウィンドウに「アクセス中のURL:http://www.xxx~の読み込みに失敗しました。」というエラーが出てしまいます。

php.ini設定でGDライブラリやらみても、特にファイル制限云々の記述はないし、どこに問題があるのか分かりません。

どなたか解決方法をご存じの方がいらっしゃいましたら、どうぞよろしくお願いいたします。

A 回答 (3件)

これだけのコードでポップアップウィンドウが出るという状況を理解してないです、すみません。

テストの用のその1行だけであれば何の出力もないハズですよね。エラーメッセージは表示されると思いますが、その場合普通にこのスクリプトを起動したブラウザ上に表示されますよね?ポップアップウィンドウというのはブラウザのサブウィンドウではなくて?

一つ想像が付くのですが、読み込みはjpegでも内部ではbmpのような単純な形に展開しているのかも知れません。そうすると元のjpegファイルは小さくてもピクセルサイズが大きくなればその分メモリを食います。それらしい記述が参考URLの下のコメント欄にあります(英語ですが)。1500×1500のサイズのBMPであればだいたい8MB位メモリを食ってもおかしくないです。memory_limitの値をもっと大きくしてみたらどうでしょう?コンパイル時に--enable-memory-limitをつけないといけないような事がマニュアルに書いてありますが、リコンパイル等できる環境ですか?

試しにimagecreatefromgif()で画像のサイズを変えてやってみたらどうでしょうか?ピクセルサイズに関してimagecreatefromjpegと同じ挙動を示すのではないでしょうか?
    • good
    • 0

瞬時にエラーが出ますかぁ。

そうなると普通にデバッグをしないといけませんね。

スクリプトの概要を確認したいのですが、imagecreatefromjpegで画像を読み込んで、何らかの加工を行ってブラウザに表示する、という感じですか?そしてそれはその別ウィンドウに表示される、という感じでしょうか。そしてある程度の大きさ以上になると画像ではなくエラーメッセージが表示される、と。

スクリプトで画像を表示する時にありがちなのが、画像以外のデータが出力されてしまう場合です。例えばエラーメッセージやデバッグメッセージなどですね。デバッグには横取り丸等を使用するとブラウザに送られているデータが読み取れるので、どんなデータがサーバーから送られているか確認する事をお勧めします。

参考URL:http://hide.maruo.co.jp/software/ydm.html
    • good
    • 0
この回答へのお礼

ありがとうございます。
スクリプトですが、最終的にはおっしゃるとおりの流れを想定しているのですが、該当ファイルは一応テスト的に、

<?php
$image = imagecreatefromjpeg("xxxx.jpg");
?>

だけにしてあります。つまり、実際正常動作したとしても、テストですのでブラウザ上は何も出力していません。その状態でその対象ファイル(xxxx.jpg)がファイルによってエラーが出たり出なかったりします。

その後テストをしているのですが、実はファイル容量ではなく、ファイルの縦横ピクセルサイズが関連しているようなのです。
例えば、真っ白な画像を1500×1500ピクセルでJPEG保存すると72KB程度なのですが、エラーが出るという感じです。

エラーというのは、質問内容のとおりですが、そちらはブラウザ表示ではなく、ポップアップウィンドウでのエラー表示となります。

お礼日時:2005/06/01 17:18

タイムアウトではないでしょうか?



ブラウザからPHPを実行した場合、デフォルトでは30秒でタイムアウトになります。php.iniのmax_execution_timeの値か、set_time_limit関数で最大実行時間を変更してあげないと30秒でタイムアウトになります。

また、ブラウザが一定時間サーバーからの反応がないとタイムアウト等のエラーを返す場合もあります。これはブラウザ側の設定の問題です。

ファイルの大きさによってエラーが出るようなので、このあたりが疑わしいかな、と思いました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速php.iniの設定で、max_execution_timeの値を確認しましたが、デフォルトで30秒でした。
ブラウザ(MAC IE5.1)の方は残念ながら確認できず...

ただ、再度確認すると、一定時間というより速攻(1秒程度)でエラーが表示されるようです。

お礼日時:2005/06/01 15:17

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