HTML5(二)音頻視頻畫布

HTML5 Audio(音頻)

定義和用法

<audio src="someaudio.wav" controls="controls"> 您的瀏覽器不支持 audio 標籤。 </audio>

提示:能夠在開始標籤和結束標籤之間放置文本內容,這樣老的瀏覽器就能夠顯示出不支持該標籤的信息。html

音頻格式的MIME類型

Format MIME-type
MP3 audio/mpeg
Ogg audio/ogg
Wav audio/wav

屬性

屬性 描述
autoplay autoplay 若是出現該屬性,則音頻在就緒後立刻播放。
controls controls 若是出現該屬性,則向用戶顯示控件,好比播放按鈕。
loop loop 若是出現該屬性,則每當音頻結束時從新開始播放。
muted muted 規定視頻輸出應該被靜音。
preload preload 若是出現該屬性,則音頻在頁面加載時進行加載,並預備播放。若是使用 "autoplay",則忽略該屬性。
src url 要播放的音頻的 URL。

最小Demo代碼

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>audio</title>
</head>
<body>
	<audio src="someaudio.wav" controls="controls"> 您的瀏覽器不支持 audio 標籤。 </audio>
</body>
</html>

src能夠修改本身的本地路徑,請注意調節音量再播放html5

《光》陳粒

web

HTML5 Video(視頻)

<video src="movie.mp4" controls="controls"> 您的瀏覽器不支持 video 標籤。 </video>

視頻格式

格式 MIME-type
MP4 video/mp4
WebM video/webm
Ogg video/ogg

HTML5 Audio/Video 方法

方法 描述
addTextTrack() 向音頻/視頻添加新的文本軌道
canPlayType() 檢測瀏覽器是否能播放指定的音頻/視頻類型
load() 從新加載音頻/視頻元素
play() 開始播放音頻/視頻
pause() 暫停當前播放的音頻/視頻

只是經常使用的一些方法,具體用到更多再查。canvas

最小Demo代碼

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
	<video src="video.mp4" controls="controls"> 您的瀏覽器不支持 video 標籤。 </video>
</body>
</html>

HTML5 Canvas

HTML5 canvas 元素用於圖形的繪製,經過腳本 (一般是JavaScript)來完成.瀏覽器

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"> </canvas>

建立canvas元素, 再使用 style 屬性來添加邊框。網絡

顏色、樣式和陰影

屬性 描述
fillStyle 設置或返回用於填充繪畫的顏色、漸變或模式
strokeStyle 設置或返回用於筆觸的顏色、漸變或模式
shadowColor 設置或返回用於陰影的顏色
shadowBlur 設置或返回用於陰影的模糊級別
shadowOffsetX 設置或返回陰影距形狀的水平距離
shadowOffsetY 設置或返回陰影距形狀的垂直距離
方法 描述
createLinearGradient() 建立線性漸變(用在畫布內容上)
createPattern() 在指定的方向上重複指定的元素
createRadialGradient() 建立放射狀/環形的漸變(用在畫布內容上)
addColorStop() 規定漸變對象中的顏色和中止位置

Canvas - 漸變

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Canvas</title>
</head>
<body>
	<div>
		<div> 線性漸變:</div>
		<canvas id="myCanvas" width="200" height="200"></canvas>
	</div>
	<div>
		<div> 徑向/圓漸變:</div>
		<canvas id="myCanvas2" width="200" height="200"></canvas>
	</div>
	<script>
		var c=document.getElementById("myCanvas");
		var ctx=c.getContext("2d");
		 
		// 建立漸變
		var grd=ctx.createLinearGradient(0,0,200,0);
		grd.addColorStop(0,"red");
		grd.addColorStop(1,"white");
		 
		// 填充漸變
		ctx.fillStyle=grd;
		ctx.fillRect(10,10,150,80);

		var c=document.getElementById("myCanvas2");
		var ctx=c.getContext("2d");
		 
		// 建立漸變
		var grd=ctx.createRadialGradient(75,50,5,90,60,100);
		grd.addColorStop(0,"red");
		grd.addColorStop(1,"white");
		 
		// 填充漸變
		ctx.fillStyle=grd;
		ctx.fillRect(10,10,150,80);
	</script>
</body>
</html>

線條樣式

屬性 描述
lineCap 設置或返回線條的結束端點樣式
lineJoin 設置或返回兩條線相交時,所建立的拐角類型
lineWidth 設置或返回當前的線條寬度
miterLimit 設置或返回最大斜接長度

矩形

方法 描述
rect() 建立矩形
fillRect() 繪製「被填充」的矩形
strokeRect() 繪製矩形(無填充)
clearRect() 在給定的矩形內清除指定的像素

路徑

方法 描述
fill() 填充當前繪圖(路徑)
stroke() 繪製已定義的路徑
beginPath() 起始一條路徑,或重置當前路徑
moveTo() 把路徑移動到畫布中的指定點,不建立線條
closePath() 建立從當前點回到起始點的路徑
lineTo() 添加一個新點,而後在畫布中建立從該點到最後指定點的線條
clip() 從原始畫布剪切任意形狀和尺寸的區域
quadraticCurveTo() 建立二次貝塞爾曲線
bezierCurveTo() 建立三次方貝塞爾曲線
arc() 建立弧/曲線(用於建立圓形或部分圓)
arcTo() 建立兩切線之間的弧/曲線
isPointInPath() 若是指定的點位於當前路徑中,則返回 true,不然返回 false

Canvas - 路徑

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>video</title>
</head>
<body>
	<canvas id="myCanvas" width="200" height="100"
		style="border:1px solid #000000;">
	</canvas>
	<script>
		var c=document.getElementById("myCanvas");
		var ctx=c.getContext("2d");
		ctx.beginPath();
		ctx.arc(95,50,40,0,2*Math.PI);
		ctx.stroke();
	</script>
</body>
</html>

轉換

方法 描述
scale() 縮放當前繪圖至更大或更小
rotate() 旋轉當前繪圖
translate() 從新映射畫布上的 (0,0) 位置
transform() 替換繪圖的當前轉換矩陣
setTransform() 將當前轉換重置爲單位矩陣。而後運行 transform()

文本

屬性 描述
font 設置或返回文本內容的當前字體屬性
textAlign 設置或返回文本內容的當前對齊方式
textBaseline 設置或返回在繪製文本時使用的當前文本基線
方法 描述
fillText() 在畫布上繪製「被填充的」文本
strokeText() 在畫布上繪製文本(無填充)
measureText() 返回包含指定文本寬度的對象

Canvas - 文本

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Canvas</title>
</head>
<body>
	<canvas id="myCanvas" width="200" height="200"></canvas>
	<script>
		var c=document.getElementById("myCanvas");
		var ctx=c.getContext("2d");
		ctx.font="30px Arial";
		ctx.fillText("小橘子ღ",10,100);
		ctx.strokeText("Hi~ Canvas",10,50);
	</script>
</body>
</html>

圖像繪製

方法 描述
drawImage() 向畫布上繪製圖像、畫布或視頻

Canvas - 圖像

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Canvas</title>
</head>
<body>
	<img id="scream" src="https://pic.cnblogs.com/avatar/1979230/20200321083100.png" alt="小橘子ღ">
	<canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"> 您的瀏覽器不支持 canvas 標籤。</canvas>
	<script>
		var c=document.getElementById("myCanvas");
		var ctx=c.getContext("2d");
		var img = document.getElementById("scream"); 
		
		ctx.drawImage(img, 10, 10)//若不顯示畫像則註釋這行,取消註釋下面三行
        
		// img.onload = function(){
		//     ctx.drawImage(img, 10, 10)
		// }
		
	</script>
</body>
</html>

注意:這裏有個坑,考慮到圖片是從網絡加載,若是 drawImage 的時候圖片尚未徹底加載完成,則什麼都不作。即繪圖失敗。ide

因此咱們應該保證在 img 繪製完成以後再 drawImage。oop

var img = new Image();   // 建立img元素
img.src = 'https://pic.cnblogs.com/avatar/1979230/20200321083100.png'; // 設置圖片源地址
img.onload = function(){
    ctx.drawImage(img, 0, 0)
}

像素操做

屬性 描述
width 返回 ImageData 對象的寬度
height 返回 ImageData 對象的高度
data 返回一個對象,其包含指定的 ImageData 對象的圖像數據
方法 描述
createImageData() 建立新的、空白的 ImageData 對象
getImageData() 返回 ImageData 對象,該對象爲畫布上指定的矩形複製像素數據
putImageData() 把圖像數據(從指定的 ImageData 對象)放回畫布上

合成

屬性 描述
globalAlpha 設置或返回繪圖的當前 alpha 或透明值
globalCompositeOperation 設置或返回新圖像如何繪製到已有的圖像上

進階操做字體

相關文章
相關標籤/搜索