FileReader 与canvas结合使用显示图片
话不多少,直接上代码
function fileChange() {
var file = this.files[0];
var imageType = /^image\//;
//是否是图片
if (!imageType.test(file.type)) {
layAlert("请选择图片!");
loadHide()
return;
}
//判断是否已经上传
var fileState = false;
var fileImgs = document.querySelectorAll('.imgName');
for (var i = 0; i < fileImgs.length; i++) {
if (fileImgs[i].getAttribute('data-imgname') == file.name) {
fileState = true;
}
}
if (fileState == true) {
tishi('该图片上传过了')
return;
}
fnSetImgRelaod(file)
}
function fnSetImgRelaod(file) {
if (!window.FileReader) {
layAlert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
loadHide()
return
} else {
var reader = new FileReader(file);// FileReader 对象允许Web应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容
reader.readAsDataURL(file);//开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data:URL格式的字符串以表示所读取文件的内容.
reader.onload = function (e) {
var fileImg = document.createElement('div');
$('#fileImg').siblings().show();
fileImg.className = 'fileImg prel';
document.querySelector('#fileImg').appendChild(fileImg);
var canvas = document.createElement("canvas");
canvas.className = 'canvas';
fileImg.appendChild(canvas);
var ctx = canvas.getContext("2d");
var image = new Image();
image.src = this.result;
image.onload = function () {
var cw = image.width;
var ch = image.height;
var w = image.width;
var h = image.height;
canvas.width = w;
canvas.height = h;
if (cw > 100 && cw >= ch) {
w = 100;
h = (100 * ch) / cw;
canvas.width = w;
canvas.height = h;
}
if (ch > 100 && ch >= cw) {
h = 100;
w = (100 * cw) / ch;
canvas.width = w;
canvas.height = h;
}
ctx.drawImage(image, 0, 0, w, h);
var imgBtn = document.createElement('sapn');
imgBtn.className = 'btn pabs';
imgBtn.innerText = '删除';
fileImg.appendChild(imgBtn);
var imgName = document.createElement('div');
imgName.className = 'imgName';
imgName.innerText = file.name;
imgName.setAttribute('data-imgname', file.name);
fileImg.appendChild(imgName);
imgBtn.onclick = function () {
$(this).parent().remove();
}
canvas.onclick = function () {
showImg(e.target.result)
}
}
}
}
}
FileReader 与canvas结合使用显示图片的更多相关文章
- 使用canvas 的api 实现 图片的显示 及 压缩
在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的时候,用file ...
- Android Canvas使用drawBitmap绘制图片
1.基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, ...
- android中Canvas使用drawBitmap绘制图片
1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float ...
- 用android代码显示图片的一部分源码
ShowPoritionPictureActivity代码: [java] <span style="font-size:16px;"> package com.iwi ...
- 让DELPHI自带的richedit控件显示图片
让DELPHI自带的richedit控件显示图片 unit RichEx; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichE ...
- Android训练课程(Android Training) - 高效的显示图片
高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...
- [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识
前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合 ...
- js使用canvas在前端压缩图片
HTML代码: <input id="file" type="file"> JS代码: var eleFile = document.querySe ...
- 微信小程序利用canvas生成海报分享图片
一 . 效果 这是借用女神照生成的分享的海报,图片来自网络. 新增了poster组件和更新图片自适应 二 . 准备 准备两张图片连接,最好是自己开发账号验证的https图片链接. 三 . 实现思路 其 ...
随机推荐
- html中图片自适应浏览器和屏幕,宽度高度自适应
1.(宽度自适应):在网页代码的头部,加入一行viewport元标签. <meta name="viewport" content="width=device-wi ...
- c# 调用c++ 使用指针传递的时候
http://www.cnblogs.com/warensoft/archive/2011/12/09/warenosoft3d.html 上面这篇文章很好解释了. 简单记录一下: 1. 声明 注意 ...
- Spring MVC实践
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Ja ...
- 在select中,载入时默认select为空白,选项内不显示空白项
有两种办法,一种纯css实现,一种借助js实现. html: <body onload="load()"> <select id="abc" ...
- 可视化自编码器训练结果&稀疏自编码器符号一览表
训练完(稀疏)自编码器,我们还想把这自编码器学习到的函数可视化出来,好弄明白它到底学到了什么.我们以在10×10图像(即n=100)上训练自编码器为例.在该自编码器中,每个隐藏单元i对如下关于输入的函 ...
- 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳
数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳
- 【bzoj4736/uoj#274】[清华集训2016]温暖会指引我们前行 语文题+LCT
题目描述 http://uoj.ac/problem/274 题解 语文题+LCT 对于这种语文题建议还是自己读题好一些... 读懂题后发现:由于温度互不相同,最大生成树上的路径必须走(不走的话温度大 ...
- 在git 服务器挂载、创建新的项目、克隆新的项目
流程,服务器创建项目名-->客户端克隆-->客户端提交并且推送-->完成 详细步骤 1.在git服务器路径文件夹下创建空文件夹,名字为新的项目名,如在 F:\git ...
- 【BZOJ5329】【SDOI2018】战略游戏(圆方树,虚树)
[BZOJ5329][SDOI2018]战略游戏(圆方树,虚树) 题面 BZOJ 洛谷 Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战 ...
- POJ2135:Farm Tour——题解
http://poj.org/problem?id=2135 题目大意: 从1到n再回来,每条边只能走一次,问最短路. —————————————————— 如果不告诉我是费用流打死不会想这个…… 我 ...