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

お世話になります。PHP初心者でわからないことだらけなんですが、教えてください。

画像をアップロード後、サイズを変更するスクリプトを作成したのですが、JEG画像サイズが大きくなるとimagecreatefromjpegの点でエラーになってしまいます。詳しくは「ページを表示できません。」と出てきます。ある程度までのサイズは問題なく実行されるのですが、やはりメモリ制限によるエラーなのでしょうか?

スクリプトは下記のとおりです。
************************************************
$gdimg_in = imagecreatefromjpeg($file_path);
$ix = imagesx($gdimg_in);
$iy = imagesy($gdimg_in);

/*ファイルのサイズを設定*/
if ($ix > $iy) {/*************横長の場合*/
$ox = 500;
$oy = ($ox * $iy)/$ix;
} else {/*********************縦長の場合*/
$oy = 375;
$ox = ($oy * $ix)/$iy;
}

$gdimg_out = imagecreatetruecolor($ox,$oy);
imagecopyresized($gdimg_out,$gdimg_in,0,0,0,0,$ox,$oy,$ix,$iy);
imagejpeg($gdimg_out,$file_path);
imagedestroy($gdimg_in);
imagedestroy($gdimg_out);

$img_size = getimagesize($file_path);
************************************************何か解決方法はありますか?
分かる方、是非宜しくお願いします。

A 回答 (2件)

ピント外れかもしれませんが。

。。

ファイルはちゃんとアップロードされていますか?
ファイルアップロードの制限はphp.iniで
upload_max_filesize
post_max_size
で制限されています。

この回答への補足

ご返答ありがとうございます。
ファイルはちゃんとアップロードされていました。
フォルダに保存されてあり、そのファイルを縮小したいのですが、
縮小する前の処理(imagecreatefromjpeg)で
エラーが起きてるみたいです。

メモリー制限によるエラーだと、レンタルサーバーなのでmemory_limitを設定できません。
別の方法で、画像縮小する良い方法はありますか?

補足日時:2006/08/31 20:54
    • good
    • 0

> ファイルはちゃんとアップロードされていました。


一つきり分けが出来ました。ソースはしっかりあると言う事ですね。

> ページを表示できません。
とでてきているのに、

> 縮小する前の処理(imagecreatefromjpeg)で
> エラーが起きてるみたいです。

と言う根拠は何でしょう?

http://php.s3.to/man/function.imagecreatefromjpe …
のPHPマニュアルにあるように空の画像を表示する方法もありますが、とりあえず

$gdimg_in = @imagecreatefromjpeg($file_path);
if (!$gdimg_in) { /* オープンに失敗した場合 */
echo "imagecreatefromjpeg で {$file_path}のオープンに失敗";
exit;
}
としてエラー表示されるか確認する事も良いかと。

あと、エラーが起きるとすれば
imagecopyresizedやimagejpegあたりですから、その辺もエラーを出力するようにしてみれば原因が究明しやすいです。

この回答への補足

またまた、有難うございます。
>>縮小する前の処理(imagecreatefromjpeg)で
>>エラーが起きてるみたいです。

>と言う根拠は何でしょう?
これは、imagecreatefromjpegの直前直後に
print "aaa";
exit;
を記述して試した際に直前だと"aaa"が表示されたんですけど、直後だと"ページを表示できません"と表示されます。

ちなみに
$gdimg_in = @imagecreatefromjpeg($file_path);
if (!$gdimg_in) { /* オープンに失敗した場合 */
echo "imagecreatefromjpeg で {$file_path}のオープンに失敗";
exit;
}
で試した際も"ページを表示できません"でした。
やはり、imagecreatefromjpegでのメモリ制限エラーなのでしょうか?

もしそうだとしたら、他に画像をリサイズする方法ってありますか?

補足日時:2006/09/04 17:22
    • good
    • 0

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