首页 前端知识 html5 实现图片预览

html5 实现图片预览

2024-04-23 21:04:44 前端知识 前端哥 817 885 我要收藏
  • Tip

图片预览效果

====================================================================

还是先直接给出 demo 吧,大家可以运行这个 demo 先来看一下效果:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>blob-fileRender</title> <style> #prev1, #prev2 { height: 400px; width: 100%; } img { height: 100%; } </style> </head> <body> <div id="prev1"> <input type="file" id="file1" accept="image/*"> <br> <img src="" alt="" id="view1"> </div> <br><br> <div id="prev2"> <input type="file" id="file2" accept="image/*"> <br> <img src="" alt="" id="view2"> </div> <script> document.getElementById("file1").addEventListener('change', function(){ var files = this.files; var file; if (files && files.length) { file = files[0]; if (/^image\/png$|jpeg$/.test(file.type)) { document.getElementById('view1').src = URL.createObjectURL(file); } else { alert("Please choose an image file with jpg jpeg png."); } } else { alert("Please choose image file"); } }, false); document.getElementById("file2").addEventListener('change', function(){ var files = this.files; var file; if (files && files.length) { file = files[0]; if (/^image\/png$|jpeg$/.test(file.type)) { var reader = new FileReader(); reader.onload = function (e) { document.getElementById('view2').src = e.target.result; }; reader.readAsDataURL(file); } else { alert("Please choose image file with jpg jpeg png."); } } else { alert("Please choose image file"); } }, false); </script> </body> </html>

可以保存这个 html 文件,然后打开。

这里面有两个选择文件的按钮,都实现了选中图片,然后实时预览的效果。但是实现的细节并不一样。

分别使用了 URLFileReader 来实现的。

FileReader

========================================================================

FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。

其中 File 对象可以是来自用户在一个 <input> 元素上选择文件后返回的 FileList 对象,也可以来自拖放操作生成后的 DataTransfer 对象,还可以是来自在一个 HTMLCanvasElement 上执行 mozGetAsFile() 方法后返回结果。

想要创建一个 FileReader 对象,很简单,如下:

var reader = new FileReader();

FilerReader 对象有以下方法和事件:

方法概述


abort()

readAsArrayBuffer()

readAsBinaryString()

readAsDataURL()

readAsText()

事件处理程序


onabort

onerror

onload

onloadend

onloadstart

onprogress

关于 方法概述事件处理程序 的详细使用细则,建议大家阅读这篇较为官方的文档:

https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader

URL

=================================================================

在现代浏览器中,有 URL 这个对象,可以直接使用:

URL.createObjectURL(file);

为了兼容性考虑,我们可以这样:

var URL = window.URL || window.webkitURL;

这个 URL 提供了用于创建和管理对象 URLs 的静态方法。它也可以作为一个构造函数被调用来构造 URL 对象。

语法


调用一个静态方法:

img.src = URL.createObjectURL(blob);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里免费领取前端学习资料

学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里免费领取前端学习资料

前端学习书籍导图-1

转载请注明出处或者链接地址:https://www.qianduange.cn//article/5866.html
标签
评论
发布的文章

【Java】JSONArray详解

2024-04-30 12:04:14

Unity——LitJSON的安装

2024-04-30 12:04:06

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!