ホームページ  >  記事  >  バックエンド開発  >  動画撮影・アップロードアバター機能のPHP実装サンプルコード_PHPチュートリアル

動画撮影・アップロードアバター機能のPHP実装サンプルコード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:12:19859ブラウズ

PHP でビデオ写真を実装したい場合は、フラッシュ プラグインを使用する必要があります。フラッシュで実際の写真を撮影するには、PHP の $GLOBALS ['HTTP_RAW_POST_DATA'] を通じてデータを受け取り、それをファイルとして保存します。以下にそれを紹介します。

現在、携帯電話での写真撮影が非常に人気がありますが、携帯電話を使って写真を撮ったり、アバターをアップロードしたりするにはどうすればよいですか?理由は非常に簡単で、まず、携帯電話は写真情報を転送します。これはポスト転送や取得関数の転送ではありません。 この他のデータ形式は、$GLOBALS ['HTTP_RAW_POST_DATA'] を使用して転送されます。このシステム関数は post に非常に似ていますが、$GLOBALS ['HTTP_RAW_POST_DATA'] では、より豊富なデータ形式がサポートされています。詳細な違いについては、Baidu と Google を検索してください。
デザインプロセスは次のとおりです:
$GLOBALS ['HTTP_RAW_POST_DATA'] は写真データ ストリーム (バイナリ) を転送します –> 空の画像を開きます –> データ ストリームを空の画像に書き込みます – それが有効な画像であるかどうかを確認します – 完了。
写真の転送に使用されるバイナリ ストリームには、時間の観点から、写真のサイズ、形式、その他の属性が含まれていることに注意してください。携帯電話の画像情報は Web ページに転送されます。

Flash は通常、携帯電話で写真のサイズをカットするために使用されます。写真やビデオがバイナリ ストリームで構成されていることは誰もが知っています。写真はアップロードできるので、ビデオもアップロードできるでしょうか。携帯電話で写真を撮ってアバターをアップロードするのと原理は同じでしょうか?自分で調べることもできます

コードをアップロードするだけです

コードは次のとおりですコードをコピー
/*

*写真をアップロードします
* @パラメータ; * @日付:2011-8-15
* @作者:cy
* */
関数 UpImg($subdir){
// ストレージパスを設定します
if(!empty($subdir)){
$dirnow=getcwd();
$folder =$dirnow."/www.bkjia.com/".$subdir;// 画像を保存するフォルダー
If( !is_dir($folder) ) mkdir($folder);

// 画像の名前付け

$datenow=date('Ymd');

$timenow=time();
$image = $datenow.$timenow.'.jpg';

// 画像は既に存在しますか? $check = $folder . $image;

if (file_exists($check)) {

リンクを解除($check);
} その他 {
$png = file_get_contents ( 'php://input' ) ? file_get_contents ( 'php://input' ) : gzuncompress ( $GLOBALS ['HTTP_RAW_POST_DATA'] );// 投稿されたバイナリ生データを取得します
If(!empty($png)){
$file = @fopen($folder."/".$image, "w");
fwrite($file,$png);// hzhuti.com に書き込みます
fclose($file);//閉じる
// 元の画像の場所
$write_image = $folder .$image;

}その他{
$msg = "データ ストリームがありません";

}

If(getimageInfo($write_image)){
$msg = "アップロード成功";
}else{$msg = "画像の形式が正しくありません";}
}
}その他{
$msg = "パラメータエラー";
}
$msg を返します;
}

/*
* 画像が合法かどうかを確認してください

* @パラメータ; ファイル名

* @日付:2011-8-15
* @作者:cy
* */
関数 getimageInfo($imageName = '') {
$imageInfo = getimagesize ($imageName);
If ($imageInfo !== false) {
$imageType = strto lower ( substr ( image_type_to_extension ( $imageInfo [2] ), 1 ) );
// $imageSize = ファイルサイズ ($imageInfo);
return $info = array ('width' => $imageInfo [0], 'height' => $imageInfo [1], 'type' => $imageType, 'mine' => $imageInfo ['mine '] );
} else {
// php100.comではない法的写真
false を返す;
}

}

xml-rpc を使用する場合、サーバー側は $_POST 配列ではなく、主に php 入力ストリーム入力を通じてクライアント データを取得します

上記の検出に基づいて、次の要約を作成できます:
1. Content-Type 値が application/x-www-form-urlencoded の場合、PHP は http リクエスト本文の対応するデータを配列 $_POST に埋め込み、$_POST 配列に埋め込まれたデータは次のように解析されます。 urldecode() の結果。 (実際にはContent-Typeの他にフォームデータであることを示すmultipart/form-dataもありますが、これについては後ほど紹介します)
2. Content-Type が multipart/form-data でない限り、php://input data (この条件は後で紹介します)。次に、php: //入力データは、データの http エンティティ本体部分と一致します。この部分的に一貫したデータの長さは、Content-Length によって指定されます。
3. Content-Type が application/x-www-form-urlencoded で、送信メソッドが POST メソッドである場合にのみ、$_POST データと php://input データが「一貫性」を持ちます (引用符で囲み、それを示します)。形式と内容が一貫していません)、一貫性があります)。そうでなければ、それらは矛盾します。
4. php://input は $_GET データを読み取ることができません。これは、$_GET データが http リクエストの本文部分ではなく、http リクエスト ヘッダーの PATH フィールドに query_path として書き込まれているためです。

これは、xml_rpc サーバーが file_get_contents(‘php://input’, ‘r’) を通じてデータを読み取る理由を理解するのにも役立ちます。 $_POST から読み取るのではなく、xml_rpc のデータ仕様が xml であり、その Content-Type が text/xml であるためです。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/444582.html技術記事 php でビデオ撮影を実装したい場合は、フラッシュ プラグインを使用する必要があります。フラッシュで実際の写真を撮影した後、php の $GLOBALS [HTTP_RAW_POST_DATA] を介してデータを受け取り、それを画像として保存します。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。