[PHP-users 35529] Re: phpでjpeg画像の取り込みについて

鈴木直人@SBS情報システム n_suzuki @ sbs-infosys.co.jp
2011年 3月 12日 (土) 11:57:26 JST


自己レスです。
どうやら、うまくエラーが表示されていなかったみたいです。
シンプルなプログラムにしてみたら、メモリーエラーが出ました。
php.iniのmemory_limitを16Mから128Mへ、変更したら問題なくできました。

>
> はじめまして
> 鈴木と申します。
>
> phpでjpeg画像の取り込みについて教えてください。
> すでに投稿されていたらすみません。
>
> やりたいことは、画像をサーバにbase64でテキストにしてデータ格納することです。 
> 
> 現在のロジック上では300KBぐらいの画像は問題ありません。
> 500KBにちかくなると、「ページを表示できません」と表示されてしまいます。
> phpのエラーログには何も残りません。
>
> 以下プログラムを記載します。
> まず、fileタイプのinputタグで画像を取得します。
> print("画像1 <input name='imgpath_a' type='file' size='60' 
> onChange='imgc_a(this)'><br><br>");
>
> ポストした後のプログラムで
> この画像を元に以下のファンクションでリサイズしています。
>
> //postされたイメージを作成するfunction
>        function image_create($type,$img_path){
>                switch ($type){
>                        case "image/jpeg":
>                                $img_in=@ImageCreateFromJPEG($img_path);
>                                break;
>                }
>                return $img_in;
>        }
>
> function image_to_text($gazou_length,$type,$imgpath,$imgtmp){   //幅,画像タイプ,画像のパス,画像tmp
>                $imgin=image_create($type,$imgpath);   //イメージ作成
>                //---[リサイズ start]---
>                $imgsize=getImageSize($imgpath);
>                $length=$gazou_length;    //最大幅
>                if($imgsize[0]>$length || $imgsize[1]>$length){
>                        if($imgsize[0] >= $imgsize[1]){     //横が縦より大きい
>                                $width = $length;     //幅
>                                $high = $imgsize[1] * $length / 
> $imgsize[0];
>                        }else{
>                                $width = $imgsize[0] * $length / 
> $imgsize[1];
>                                $high = $length;
>                        }
>                        $imgout=ImageCreateTruecolor($width,$high);
> 
> ImageCopyResampled($imgout,$imgin,0,0,0,0,$width,$high,$imgsize[0],$imgsize[1]);
>                        resize_image_create($type,$imgout,$imgtmp);
>
>                        ImageDestroy($imgin);
>                        ImageDestroy($imgout);
>                }
>                //---[リサイズ end]---
>                //---[テキスト化 start]---
>                $imgtxt=file_get_contents($imgtmp);
>                $imgtxt=base64_encode($imgtxt);
>                //---[テキスト化 end]---
>                return $imgtxt ;
>        }
>
> 調べた結果、  $img_in=@ImageCreateFromJPEG($img_path); で、ページを表示できませんになっているようです。
> メモリの関係と思ったのですが、php.iniの設定は、
> post_max_size = 8M
> (100Mまでテスト済み)
> upload_max_filesize = 2M
> となっています。
>
> 何か考えられことはあるでしょうか。
> どなたか、ご教授願いします。
>
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3 



PHP-users メーリングリストの案内