话不多少,直接上代码

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结合使用显示图片的更多相关文章

  1. 使用canvas 的api 实现 图片的显示 及 压缩

    在移动端压缩图片并且上传主要用到filereader.canvas 以及 formdata 这三个h5的api.逻辑并不难.整个过程就是: (1)用户使用input file上传图片的时候,用file ...

  2. Android Canvas使用drawBitmap绘制图片

    1.基本的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置 drawBitmap(Bitmap bitmap, float left, float top, ...

  3. android中Canvas使用drawBitmap绘制图片

    1.主要的绘制图片方法 //Bitmap:图片对象,left:偏移左边的位置,top: 偏移顶部的位置     drawBitmap(Bitmap bitmap, float left, float ...

  4. 用android代码显示图片的一部分源码

    ShowPoritionPictureActivity代码: [java] <span style="font-size:16px;"> package com.iwi ...

  5. 让DELPHI自带的richedit控件显示图片

    让DELPHI自带的richedit控件显示图片 unit RichEx; { 2005-03-04 LiChengbin Added: Insert bitmap or gif into RichE ...

  6. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

  7. [Android] 给图像加入相框、圆形圆角显示图片、图像合成知识

        前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和加入水印,继续我的"随手拍"项目完毕给图片加入相框.圆形圆角显示图片和图像合 ...

  8. js使用canvas在前端压缩图片

    HTML代码: <input id="file" type="file"> JS代码: var eleFile = document.querySe ...

  9. 微信小程序利用canvas生成海报分享图片

    一 . 效果 这是借用女神照生成的分享的海报,图片来自网络. 新增了poster组件和更新图片自适应 二 . 准备 准备两张图片连接,最好是自己开发账号验证的https图片链接. 三 . 实现思路 其 ...

随机推荐

  1. html中图片自适应浏览器和屏幕,宽度高度自适应

    1.(宽度自适应):在网页代码的头部,加入一行viewport元标签. <meta name="viewport" content="width=device-wi ...

  2. c# 调用c++ 使用指针传递的时候

    http://www.cnblogs.com/warensoft/archive/2011/12/09/warenosoft3d.html 上面这篇文章很好解释了. 简单记录一下: 1. 声明  注意 ...

  3. Spring MVC实践

    MVC 设计概述 在早期 Java Web 的开发中,统一把显示层.控制层.数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Ja ...

  4. 在select中,载入时默认select为空白,选项内不显示空白项

    有两种办法,一种纯css实现,一种借助js实现. html: <body onload="load()"> <select id="abc" ...

  5. 可视化自编码器训练结果&稀疏自编码器符号一览表

    训练完(稀疏)自编码器,我们还想把这自编码器学习到的函数可视化出来,好弄明白它到底学到了什么.我们以在10×10图像(即n=100)上训练自编码器为例.在该自编码器中,每个隐藏单元i对如下关于输入的函 ...

  6. 数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

    数据库时间内接受的是lang类型的时间 分为三种字段 第一种只存日期 第二种存日期+时间 第三种时间戳

  7. 【bzoj4736/uoj#274】[清华集训2016]温暖会指引我们前行 语文题+LCT

    题目描述 http://uoj.ac/problem/274 题解 语文题+LCT 对于这种语文题建议还是自己读题好一些... 读懂题后发现:由于温度互不相同,最大生成树上的路径必须走(不走的话温度大 ...

  8. 在git 服务器挂载、创建新的项目、克隆新的项目

     流程,服务器创建项目名-->客户端克隆-->客户端提交并且推送-->完成   详细步骤   1.在git服务器路径文件夹下创建空文件夹,名字为新的项目名,如在  F:\git   ...

  9. 【BZOJ5329】【SDOI2018】战略游戏(圆方树,虚树)

    [BZOJ5329][SDOI2018]战略游戏(圆方树,虚树) 题面 BZOJ 洛谷 Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战 ...

  10. POJ2135:Farm Tour——题解

    http://poj.org/problem?id=2135 题目大意: 从1到n再回来,每条边只能走一次,问最短路. —————————————————— 如果不告诉我是费用流打死不会想这个…… 我 ...