一、创建图像对象
在 HTML5 中,Image 对象对应着一幅图片,想要获取一个图像对象,有以下几种方法:
1) 通过 document.images 集合、document.getElementsByTagName 方法或者 document.getElementById 方法来获取网页内已经存在的图片对象;
2) 用 document.getElementsByTagName 或 document.getElementById 方法来获取另外一个 Canvas 对象,将这个 Canvas 对象作为一个图像对象;
3) 最常用的方法:创建一个新的空 Image 对象,给他一个图片的超链接,代码如下:
//创建一个空图像对象 var img = new Image(); //给图像对象一个图片超链接 img.src = 'myImage.png';
4) 最后一种是通过 data: url 方式嵌入图像,这种方法很奇妙,他可以用一个很长的字符串来表示一幅图像。
那么这个很长的字符串是怎么来的呢?他是把真正的图像文件(bmp jpg 等等)通过 Base64 编码而来,具体的编码程序网上能搜索到很多,我博客里就有一个 Python 版的。
用这种方式的好处就是,图片资源始终内嵌在 HTML 网页文件中,缺点是数据量太大,而且图片没办法缓存,导致网页文件打开速度变慢
下面的字符串就是一幅美女图片的 Base64 编码的一小段,让大家看看是什么样子的:
/9j/4QDfRXhpZgAASUkqAAgAAAAFABIBAwABAAAAAQAAADEBAgAVAAAASgAAADIBAgAUAAAAXw
这些乱七八糟的东西就包含了美女图片的一小部分内容了,后面我们将把它绘制到 Canvas 上
二、绘制图像对象
我们得到一个图像对象后,它只是在内存中,我们怎么才能将它绘制到画布上呢? 上下文对象有一个绘制图像对象的方法:
drawImage(image, x, y)
简单吧?image 就是你事先准备好的图像对象,x, y 就是图像左上角放置的位置 ,这个方法调用后,你的图像就会出现在 Canvas 上了
下面我们来把上面的美女图像绘制出来,代码如下:
代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><canvas id="canvas1" width="250" height="300" style="background-color:black"> 你的浏览器不支持 <canvas>标签,请使用 Chrome 浏览器 或者 FireFox 浏览器 </canvas><br/> <input type="button" value="显示美女" onclick="Show();" /> <input type="button" value="清空" onclick="Clear();" /> <script type="text/javascript"> //美女图的 Base64 编码 IMG_SRC='data:image/gif;base64,/9j/4QDfRXhpZgAASUkqAAgAAAA......'//省略40字节 //缩小版本的美女图 IMG_SRC_SMALL='data:image/gif;base64,/9j/4QDfRXhpZgAASUkqAAgAAAA......'//省略40字节 function Show(){ //获取画布对象 ctx = document.getElementById("canvas1").getContext("2d"); //创建图像对象 img=new Image(); //图像被装入后触发 img.onload=function(){ ctx.drawImage(img,0,0); } //指定图像源 img.src=IMG_SRC; } function Clear(){ //清除画布 ctx = document.getElementById("canvas1").getContext("2d"); ctx.clearRect(0,0,250,300); } </script>
注意:把绘制方法放到图像对象的 onload 事件中,是为了确保图像在完全装入后才绘制
三、缩放图像
同样的 imageDraw 方法,增加两个参数,就可以对图像实现缩放,如下:
drawImage(image, x, y, width, height)
width 代表你想将图像绘制成多宽,height 代表你想将图像绘制成多高,设定好后系统会自动按比例进行缩放。
下面的例子我们来模仿一个常见的图像软件的小功能,通过拖动滑动条对图像进行缩放,代码如下:
代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><canvas id="canvas2" width="250" height="300" style="background-color:black"> 你的浏览器不支持 <canvas>标签,请使用 Chrome 浏览器 或者 FireFox 浏览器 </canvas><br/> 注意:下面的 Range 控件只能在 Google Chrome 浏览器中正确呈现 横向缩放<input type="range" min="1" max="20" onchange="Scale1(event)"/><br/> 纵向缩放<input type="range" min="1" max="20" onchange="Scale2(event)"/><br/> 按比例缩放<input type="range" min="1" max="20" onchange="Scale3(event)"/><br/> 平铺<input type="range" min="1" max="10" value="1" onchange="Scale4(event)"/><br/> <script type="text/javascript"> function Scale1(){ //计算比例 var scale=event.target.value/10 ///获取画布对象 ctx = document.getElementById("canvas2").getContext("2d"); //清空 ctx.clearRect(0,0,250,300); //创建图像对象 img=new Image(); //图像被装入后触发 img.onload=function(){ //横向缩放绘制 ctx.drawImage(img,0,0,img.width*scale,img.height); } //指定图像源 img.src=IMG_SRC; } function Scale2(){ //计算比例 var scale=event.target.value/10 ///获取画布对象 ctx = document.getElementById("canvas2").getContext("2d"); //清空 ctx.clearRect(0,0,250,300); //创建图像对象 img=new Image(); //图像被装入后触发 img.onload=function(){ //纵向缩放绘制 ctx.drawImage(img,0,0,img.width,img.height*scale); } //指定图像源 img.src=IMG_SRC; } function Scale3(){ //计算比例 var scale=event.target.value/10 ///获取画布对象 ctx = document.getElementById("canvas2").getContext("2d"); //清空 ctx.clearRect(0,0,250,300); //创建图像对象 img=new Image(); //图像被装入后触发 img.onload=function(){ //按比例缩放绘制 ctx.drawImage(img,0,0,img.width*scale,img.height*scale); } //指定图像源 img.src=IMG_SRC; } function Scale4(){ //平铺比例 var scale=event.target.value; ///获取画布对象 ctx = document.getElementById("canvas2").getContext("2d"); //清空 ctx.clearRect(0,0,250,300); //创建图像对象 img=new Image(); //图像被装入后触发 img.onload=function(){ //平铺个数 var n1=img.width/scale; var n2=img.height/scale; for(var i=0;i<n1;i++) for(var j=0;j<n2;j++) ctx.drawImage(img,i*img.width/scale,j*img.height/scale,img.width/scale,img.height/scale); } //指定图像源 img.src=IMG_SRC; } </script>
横向缩放
纵向缩放
按比例缩放
平铺
提示:
只有在 Google Chrome 浏览器中,Range 控件才能呈现出滑动条的的样子并正确工作;
在其他浏览器中,您可能只能看到四个文本框,并且无法正常工作
四、裁剪图像
图像裁剪同样是使用 imageDraw 方法,原型如下:
drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight),其中
sx, sy 是图像上的一个坐标位置,这个坐标是裁剪的起始点
sWidth, sHeight 是裁剪的宽度和长度
有了这四个参数,我们就可以将图像上的任意区域裁剪出来了
另外
dx, dy 是画布上的一个坐标为止,裁剪出来的图像的左上角将放置在这个位置
dWidth, dHeight 是设置裁剪出来的图像绘制成多长和多宽,可以缩放
裁剪图像比较简单,就不给例子了
五、图案
在上面的图像缩放中,我们用循环的方法实现了图像的平铺,其实还有更方便的方法,就是用图案对象填充画布,图案对象用下面的方法创建:
createPattern(image,type)
其中,Type 必须是下面的字符串值之一:repeat,repeat-x,repeat-y 和 no-repeat。
得到图案对象后,可以将其设置给上下文对象的 fillStyle 属性,然后再填充画布,就可以看到重复填充的效果了。
下面的代码中,我们将把缩小版本的美女图用 repeat 模式,平铺到画布上:
图案 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><canvas id="canvas3" width="250" height="300" style="background-color:black"> 你的浏览器不支持 <canvas>标签,请使用 Chrome 浏览器 或者 FireFox 浏览器 </canvas><br/> <input type="button" value="贴图" onclick="Patterns();" /> <input type="button" value="清空" onclick="ClearPatterns();" /> <script type="text/javascript"> //美女图的缩小版本 IMG_SRC_SMALL='data:image/gif;base64,/9j/4QDfRXhpZgAASUkqAAgAAAAFABIBA......';//省略四个字节 function Patterns(){ ///获取画布对象 ctx = document.getElementById("canvas3").getContext("2d"); //创建图像对象 img=new Image(); //指定图像源 img.src=IMG_SRC_SMALL; //图像被装入后触发 img.onload=function(){ //创建图案 var ptrn = ctx.createPattern(img,'repeat'); //将图案设置为填充样式 ctx.fillStyle = ptrn; //填充画布 ctx.fillRect(0,0,250,300); } } function ClearPatterns(){ ///获取画布对象 ctx = document.getElementById("canvas3").getContext("2d"); //清空 ctx.clearRect(0,0,250,300); } </script>
六、字体
HTML5 的没有专门的字体对象,上下文对象中有三个属性用来设置字体,两个方法来绘制字符串,他们是:
font:文字字体,同 CSS font-family 属性
textAlign:文字水平对齐方式。可取属性值: start, end, left, right, center。默认值: start.
textBaseline:文字竖直对齐方式。可取属性值:top, hanging, middle, alphabetic, ideographic, bottom。默认值:alphabetic.
fillText 和 strokeText:用填充方式和轮廓方式绘制字符串
下面的代码绘制两个不同设置的 Hello World 字符串
代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->context.fillStyle = '#00f'; context.font = 'italic 30px sans-serif'; context.textBaseline = 'top'; //填充字符串 context.fillText ('Hello world!', 0, 0); context.font = 'bold 30px sans-serif'; //轮廓字符串 context.strokeText('Hello world!', 0, 50);
下图是上面的代码运行效果:
위 내용은 HTML5(5) - 이미지, 패턴 및 글꼴을 사용하여 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

html5isamajorrevisionof thehtml thatrevolutions webdevelopments and capabilitiess.1) itenhancescodereadabilitys 및 and .2) html5enablestriCher, Interactive Experiences, Withoutplugs를 허용합니다

H5에 대한 고급 팁에는 다음이 포함됩니다. 1. 복잡한 그래픽 사용, 2. 웹 워크를 사용하여 성능 향상, 3. WebStorage, 4. 응답 디자인 구현, 5. WebRTC를 사용하여 실시간 커뮤니케이션을 달성하기 위해, 6. 성능 최적화 및 모범 사례를 수행하십시오. 이 팁은 개발자가보다 역동적이고 대화식 및 효율적인 웹 응용 프로그램을 구축 할 수 있도록 도와줍니다.

H5 (HTML5)는 새로운 요소와 API를 통해 웹 컨텐츠와 디자인을 개선합니다. 1) H5는 시맨틱 태깅 및 멀티미디어 지원을 향상시킵니다. 2) 웹 디자인을 풍부하게하는 캔버스 및 SVG를 소개합니다. 3) H5는 새로운 태그와 API를 통해 HTML 기능을 확장하여 작동합니다. 4) 기본 사용에는이를 사용하여 그래픽 생성이 포함되며, 고급 사용량은 WebStorageapi와 관련이 있습니다. 5) 개발자는 브라우저 호환성 및 성능 최적화에주의를 기울여야합니다.

H5는 여러 가지 새로운 기능과 기능을 제공하여 웹 페이지의 상호 작용 및 개발 효율성을 크게 향상시킵니다. 1. Enhance SEO와 같은 시맨틱 태그. 2. 멀티미디어 지원은 오디오 및 비디오 재생 및 태그를 단순화합니다. 3. 캔버스 드로잉은 역동적 인 그래픽 드로잉 도구를 제공합니다. 4. 로컬 스토리지는 LocalStorage 및 SessionStorage를 통해 데이터 스토리지를 단순화합니다. 5. Geolocation API는 위치 기반 서비스의 개발을 용이하게합니다.

HTML5는 5 가지 주요 개선 사항을 제공합니다. 1. 시맨틱 태그는 코드 선명도 및 SEO 효과를 향상시킵니다. 2. 멀티미디어 지원은 비디오 및 오디오 임베딩을 단순화합니다. 3. 형태 향상은 검증을 단순화한다. 4. 오프라인 및 로컬 스토리지는 사용자 경험을 향상시킵니다. 5. 캔버스 및 그래픽 기능은 웹 페이지의 시각화를 향상시킵니다.

HTML5의 핵심 기능에는 시맨틱 태그, 멀티미디어 지원, 오프라인 저장 및 로컬 스토리지 및 형태 향상이 포함됩니다. 1. 코드 가독성 및 SEO 효과를 향상시키는 시맨틱 태그 등. 2. 레이블로 멀티미디어 임베딩을 단순화하십시오. 3. ApplicationCache 및 LocalStorage와 같은 오프라인 스토리지 및 로컬 스토리지는 네트워크없는 작동 및 데이터 저장을 지원합니다. 4. 양식 향상은 처리 및 검증을 단순화하기 위해 새로운 입력 유형 및 검증 속성을 도입합니다.

H5는 다양한 새로운 기능과 기능을 제공하여 프론트 엔드 개발 기능을 크게 향상시킵니다. 1. 멀티미디어 지원 : 미디어를 포함하고 요소를 포함하여 플러그인이 필요하지 않습니다. 2. 캔버스 : 요소를 사용하여 2D 그래픽 및 애니메이션을 동적으로 렌더링합니다. 3. 로컬 스토리지 : LocalStorage 및 SessionStorage를 통해 지속적인 데이터 저장을 구현하여 사용자 경험을 향상시킵니다.

H5 및 HTML5는 다른 개념입니다. HTML5는 새로운 요소 및 API를 포함하는 HTML의 버전입니다. H5는 HTML5를 기반으로 한 모바일 애플리케이션 개발 프레임 워크입니다. HTML5는 브라우저를 통해 코드를 구문 분석하고 렌더링하는 반면 H5 응용 프로그램은 컨테이너를 실행하고 JavaScript를 통해 기본 코드와 상호 작용해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
