php圖片位元組流
『壹』 php如何將圖片轉成位元組流
在php中,有文件上傳,那麼php伺服器端可以接收到請求參數 $_FILES,在 $_FILES數組中讀取到上傳文件的form表單名,然後在讀取的數組中可以獲取上傳文件的源文件,使用 fopen()函數就可以獲取文件的位元組流了。
具體來點代碼看看吧:(假定上傳文件的表單名為 「formname」)
if($_FILES && isset($_FILES["formname"])){
//獲取上傳的文件的屬性數組
$_fileinfo = $_FILES["formname"];
//獲取上傳文件的原文件名
$_filename = $_fileinfo["name"];
//獲取上傳文件的大小
$_filesize = $_fileinfo["size"];
//獲取上傳文件的臨時文件名(長文件名)
$_filesource = $_fileinfo["tmp_name"];
//以讀寫方式打開文件,並將資源綁定到一個流上
$_filestream = fopen($_filesource,"ab");
//實現上傳文件,其實質是把臨時文件移動到制定的保存文件的位置
$_newfilename = "../mypath/filename.exp"; //自定義文件名,包含路徑,可以是相對路徑
move_uploaded_file($_filesource, $_newfilename);
}
『貳』 php處理位元組流
位元組流是由位元組組成的,
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
字元流和位元組流都是什麼
流就是stream. 一個連續的位元組隊列。
流是程序輸入或輸出的一個連續的位元組序列,設備(例如滑鼠,鍵盤,磁碟,屏幕和列印機)的輸入和輸出都是用流來處理的。在C語言中,所有的流均以文件的形式出現---不一定是物理磁碟文件,還可以是對應與某個輸入/輸出源的邏輯文件
流(streams)在I/O系統中是一種I/O機制和功能,或者稱為streams子系統。它本身並不是一個物理設備的概念。
引入流的目的:
傳統的字元設備驅動程序框架有許多缺點,這表現在:
。內核與字元設備驅動程序間介面的抽象層次太高
。內核沒有為字元設備提供可靠的緩沖區分配和管理功能
。許多系統對字元設備的界面是把數據看成是FIFO(先進先出)的位元組流,因此沒有識別消息邊界,區分普通設備和控制信息,以及判定不同消息優先順序的能力,也沒有位元組流流量控制
。在網路數據傳輸設備中這些問題更突出。網路中數據傳輸是基於消息或數據分組的。
流的概念:
用通訊中的術語來說,流是全雙工的處理過程,它是內核中驅動程序和用戶進程之間的數據傳輸通道。
從流的構造上來說,它由一個流頭,一個流驅動程序尾,以及其間的零個或若干個可選模塊構成 。流頭是一個用戶級介面,它允許用戶應用程序通過系統調用介面來訪問流。驅動程序尾與底層設備通信。在流的中間的模塊是處理數據的。
位元組流與字元流主要的區別是他們的的處理對象
位元組流是由位元組組成的,字元流是由字元組成的. Java里字元由兩個位元組組成.
位元組流是最基本的,所有的InputStrem和OutputStream的子類都是,主要用在處理二進制數據,它是按位元組來處理的
但實際中很多的數據是文本,又提出了字元流的概念,它是按虛擬機的encode來處理,也就是要進行字元集的轉化。在從位元組流轉化為字元流時,實際上就是byte[]轉化為String時,
public String(byte bytes[], String charsetName)
有一個關鍵的參數字元集編碼,通常我們都省略了,那系統就用操作系統默認的lang
流式傳輸主要指將整個音頻和視頻及三維媒體等多媒體文件經過特定的壓縮方式解析成一個個壓縮包,由視頻伺服器向用戶計算機順序或實時傳送。在採用流式傳輸方式的系統中,用戶不必像採用下載方式那樣等到整個文件全部下載完畢,而是只需經過幾秒或幾十秒的啟動延時即可在用戶的計算機上利用解壓設備對壓縮的A/V、3D等多媒體文件解壓後進行播放和觀看。此時多媒體文件的剩餘部分將在後台的伺服器內繼續下載。
『叄』 php 圖片用base64轉碼完的文本比以前還大 是為什麼
base64轉碼會把原有圖片的像素數據轉成字元數據保存,當需要使用的時候,再把字元數據轉化為圖片數據顯示.
大小問題:
base64是通過文字記錄像素方式來保存圖片,與原有的二進制保存圖片方式並不同,所以不論變大變小都是正常現象.
為何還要使用base64.使用base64保存圖片並不是為了節省存儲空間,而是為了減少請求.要知道請求耗時且費伺服器.如果一個H5頁麵包含有100張圖片,那麼用戶打開一次,至少要請求100次圖片,1次html文件,css文件和js文件都要請求.這么下來,如果1000人同時打開,伺服器就瞬間達到了1000*101次100000並發量,無形之中增加了伺服器巨大的成本.
而使用base64,把圖片數據全部存在一個js文件中,一次請求就2次,一個html文件和一個images.js文件.伺服器1000人同時並發也就2000量級.減少伺服器壓力.
同時,應為只需要請求2個文件,請求時間大大縮短,用戶打開速度幾乎之和伺服器帶寬有關系,不用考慮過多的域名解析時間與請求時間.
『肆』 php 圖片流 轉為base64
使用PHP對圖片進行base64解碼輸出
<?php
$img = 'test.jpg';
$base64_img = base64EncodeImage($img);
echo '<img src="' . $base64_img . '" />';
function base64EncodeImage ($image_file) {
$base64_image = '';
$image_info = getimagesize($image_file);
$image_data = fread(fopen($image_file, 'r'), filesize($image_file));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
return $base64_image;
}
?>
『伍』 php 圖片以二進制流的形式存入資料庫。並且能顯示出來。
這個真不會。
『陸』 用php如何把圖像數據流保存
imagegif(resource $image [, string $filename ]) 從 image 圖像以 filename 為文件名創建一個 GIF 圖像。image 參數是 imagecreate() 或 imagecreatefrom* 函數的返回值。
imagejpeg(resource $image [, string $filename ]) 從 image 圖像以 filename 為文件名創建一個 JPEG 圖像。
imagepng(resource $image [, string $filename ]) 將 GD 圖像流(image)以 PNG 格式輸出到標准輸出(通常為瀏覽器),或者如果用 filename 給出了文件名則將其輸出到該文件。
filename 文件保存的路徑,如果未設置或為 NULL,將會直接輸出原始圖象流。
這幾個函數你參考一下,希望對你有幫助。
『柒』 android上傳圖片到php android用bitmap.compress壓縮為byte流 php怎麼解壓轉為圖片啊
android 文件上傳,自己封裝了個方法,
<?php
var_mp($_POST);
var_mp($_FILES);
foreach($_FILES as $key => $value){
move_uploaded_file($_FILES[$key]['tmp_name'],
$_SERVER['DOCUMENT_ROOT'].'/FileUpload/files/'.$_FILES[$key]['name']);
}
?>
PHP就這樣接受了