ホームページ >バックエンド開発 >PHPチュートリアル >PHPイメージのバイナリ変換の実装方法、_PHPチュートリアル

PHPイメージのバイナリ変換の実装方法、_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:33915ブラウズ

PHP画像バイナリ変換実装方法

この記事の例では、PHPイメージのバイナリ変換の実装方法を説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

ここでは、ファイルをアップロードするときにアップロードされたファイルをバイナリに変換し、それをデータフィールドに保存します。次回読み出すときに同じ方法を使用して表示できます。

HTMLコードは次のとおりです:


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


画像をデータベースに保存します。コードは次のとおりです:


コードをコピーします
コードは次のとおりです: //アップロードした画像は一時ファイルに保存されるので
//渡された画像を取得するにはファイルを読み取るだけです
$fp = fopen($_FILES["myFile"]["tmp_name"],"rb"); $buf = addlashes(fread($fp,$_FILES["myFile"]["size"])); //PDO オブジェクトを作成します
$dbh = 新しい PDO("mysql:host=localhost;port=
3306;dbname=テスト", "ルート", "123456″); //挿入操作を実行し、結果を変数に保存します
$result = $dbh->query("INSERT INTO img (images) VALUES ('$buf')"); //影響を受ける行の数を取得します
if ($result->rowCount() >0) {
echo("データが挿入されました。"); } その他 {
echo("挿入操作を実行できません。"); }
// PDO 接続を明示的に閉じます
$dbh = NULL; ?>


画像 show.php を表示します。コードは次のとおりです:



コードをコピーします

コードは次のとおりです:
$conn=@mysql_connect("localhost","root","123456″) または die("サーバー接続エラー!"); //データベースへのリンク @mysql_select_db("test",$conn) または die("データベースが見つかりません!"); $query="select * from img where Id=".$_GET['id']; $result=mysql_query($query); $num=mysql_num_rows($result); $data = mysql_result($result,0,"画像"); header("コンテンツタイプ: image/" . $num['imgType']); $data をエコーし​​ます。 ?>
または、コードは次のとおりです: コードをコピーします
コードは次のとおりです:

fopen() 関数はファイルまたは URL を開くために使用されます。構文は次のとおりです: int fopen(文字列ファイル名、文字列モード); 文字列パラメータモードは次のような状況になります:
「r」はファイルを読み取り専用で開き、ファイル ポインタは先頭を指します。
「r+」はファイルを読み書きモードで開き、ファイルポインタは先頭を指します。

「w」は書き込み用にファイルを開き、ファイル ポインタは先頭を指し、元のファイルの長さは 0 に設定されます。ファイルが存在しない場合は、新しいファイルを作成します。

「w+」はファイルを読み取り/書き込みモードで開き、ファイル ポインタは先頭を指し、元のファイルの長さは 0 に設定されます。ファイルが存在しない場合は、新しいファイルを作成します。

「a」は書き込み用にファイルを開き、ファイル ポインタはファイルの末尾を指します。ファイルが存在しない場合は、新しいファイルを作成します。

「a+」はファイルを読み取り/書き込みモードで開き、ファイル ポインタはファイルの末尾を指します。ファイルが存在しない場合は、新しいファイルを作成します。

「b」オペレーティング システムのテキスト ファイルとバイナリ ファイルが異なる場合は、このパラメータを使用できます。UNIX システムではこのパラメータを使用する必要はありません。

2.スラッシュ機能を追加します

Addslashes 関数は文字列にスラッシュを追加するために使用されます。注: 私がテストしたときは、この関数を削除しました。その理由は、自分で試してみるとわかります。

文字列はラッシュを追加します(文字列 str);

この関数は、データベースによる処理が必要な文字列の引用符にスラッシュを追加して、データベース クエリがスムーズに動作できるようにします。変更される文字には一重引用符 (') と二重引用符 (") が含まれます。 backslash() と null 文字 NULL (null バイト)。

3. フレッド関数

fread 関数は、指定された長さのバイト グループ、またはファイルの EOF の終わりまで読み取るために使用されます。構文は次のとおりです。

string fread(int fp, int length); バイナリ ファイルに対して安全です

fread() は、ファイル ポインター ファイルから最大 length バイトを読み取ります。または、EOF に達したとき、または (ネットワーク ストリームの場合) パケットが利用可能なとき、または (ユーザー空間ストリームを開いた後のとき) を読み取ります。 ) 最初にどの状況が発生したかに応じて、8192 バイトが読み取られたときにファイルの読み取りを停止します。

バイナリを画像に変換します

注: $newFilePath は、生成されたイメージの名前とパスを処理します。コードは次のとおりです。

コードをコピーします

コードは次のとおりです:

$newFilePath='1.jpg';
$data = $GLOBALS[HTTP_RAW_POST_DATA];//ポストされたバイナリ生データを取得します
if(空の空($data)){
$data=file_get_contents("php://input");
}
$newFile = fopen($newFilePath,"w");//ファイルを開いて書き込みの準備をします
fwrite($newFile,$data);//バイナリストリームをファイルに書き込みます
fclose($newFile);//ファイルを閉じます

読み取ったバイナリ ストリームをデータベースに保存することも、画像に直接書き込んでバイナリ ヘッダー ファイルを取得して、それが属するファイルの種類を知ることもできます。コードは次のとおりです。
コードをコピーします コードは次のとおりです:
$bin = substr($content,0,2);
$strInfo = @unpack("C2chars", $bin); $typeCode = intval($strInfo['chars1'].$strInfo['chars2']); $fileType = '';
スイッチ ($typeCode)
{
ケース 7790:
$fileType = 'exe'; 休憩
ケース 7784:
$fileType = 'midi'; 休憩
ケース 8297:
$fileType = 'rar'; 休憩
ケース 255216:
$fileType = 'jpg'; 休憩
ケース 7173:
$fileType = 'gif'; 休憩
ケース 6677:
$fileType = 'bmp'; 休憩
ケース 13780:
$fileType = 'png'; 休憩
デフォルト:
エコー「不明」
}


この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。




http://www.bkjia.com/PHPjc/928231.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/928231.html

技術記事

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。