前提・実現したいこと
現在forwardにてメールをPHPに転送し
処理をして画像の保存やDBへの保存を行なっています。
しかし画像が受け取ったまま格納しているためあるサイズ以上なら縮小して格納したい
画像保存箇所だと思うのですが、「フォームで受け取った画像を縮小して」という方法であれば$_FILEなどを加工して・・とわかるのですが
どれが$_FILEに当たるのか、わからず質問致しました。
①例えば横幅が600px以上であれば600pxにしようとする場合、どのように追記すればよろしいでしょうか
②追加で質問です。たまにメールに添付された画像(保存した画像)がHTMLで表示すると横向きのまま表示されます。
おそらくスマホで横向き取った画像だと思うのですが、こういうのは受け取った時に直せるのでしょうか?
該当のソースコード
$params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $params['input'] = file_get_contents("php://stdin"); // 標準入力 $params['crlf'] = "\r\n"; $structure = Mail_mimeDecode::decode($params); $CHARSET_TO="UTF-8"; $localprefix = dirname(__FILE__)."/../"; $path = "img/"; switch(strtolower($part->ctype_primary)){ case "text": $charset = $part->ctype_parameters['charset']; if ( $charset ) { $charset_from = $charset; } else { $charset_from = 'auto'; } $body = mb_convert_encoding( $part->body, $CHARSET_TO, $charset_from ); switch(strtolower($part->ctype_secondary)){ case "plain": //処理 break; case "html": //処理 break; } break; case "image": $filename = $part->d_parameters['filename']; $filetype = $part->ctype_primary; if(!empty($part->headers ['content-id'])){ $key = 'cid:'.trim($part->headers ['content-id'],"<>"); }else{ $key = $filename; if(!empty($html)){ //処理 } } //フォルダを作成 $diaryfolder = $localprefix.$path; if(!file_exists($diaryfolder)){ mkdir($diaryfolder,0777,true);} chmod($diaryfolder, 0777); // 画像ファイル自体はファイル保存。 //おそらくここで画像縮小してごにょごにょだと思うのですが $image_path = $diaryfolder. $filename; if($fp = fopen($image_path, 'w')){ $length = strlen($part->body); fwrite($fp, $part->body, $length); fclose($fp); chmod($image_path, 0644); } break; case "multipart": //処理 break; }
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/03/19 14:06
2019/03/19 14:06
2019/03/19 21:23
2019/03/19 23:31
2019/03/20 05:50