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图片链接. 三 . 实现思路 其 ...
随机推荐
- win7 x64+iis7.5 配置错误:CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\7cb4f3
解决方法: 1. 将windows/temp属性-安全-高级 添加IIS_USERS用户,同时编辑权限为完全控制(写入和编辑)即可. 注意: 要确保权限添加上了,win7下有可能系统为安全,会自动取消 ...
- js控制input只能输入数字和小数点后两位,输入其他自动清除方法。
工作中input='text'总会遇到要控制输入数字,或者是输入中文,输入电话,输入身份证号,邮箱等.今天我遇到的是要输入数字并且只能小数点后面两位的数字,还不能为负数.废话不多说上代码: <i ...
- 3ds Max学习日记(五)
把实验室要用的小工具做了出来后,忙里偷闲,把第四章没看完的视频看完了.修改器(modifier)什么的还是挺好玩的. FFD,车削,倒角,倒角剖面,对称,挤出,晶格,扭曲,融化,弯曲,网格平滑 ...
- 软工网络15团队作业4——Alpha阶段敏捷冲刺-4
一.当天站立式会议照片: 二.项目进展 昨天已完成的工作: 完成程序副界面的设计与信息的输入统计 明天计划完成的工作: 日期等细致信息的处理 工作中遇到的困难: 对微信小程序开发的代码构成有了一些了解 ...
- Android 布局方式学习
一.LinearLayout线性布局: 线性布局是程序中最常见的一种布局方式,线性布局可以分为水平线性布局和垂直线性布局两种, 通过android:orientation属性可以设置线性布局的方向 1 ...
- Codeforces Round #522 Div. 1 没打记
开场被A劝退,写了得有50min于是不敢交了.unrated了喜闻乐见. A:瞎猜都能猜到如果要走到那条直线上,进入直线的点横坐标或纵坐标与起点相同,离开直线的点横坐标或纵坐标与终点相同,证明脑补一下 ...
- Codeforces ECR52 div2翻车记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- 【题解】CF#1012 C-Hill
感觉这题的状态还是比较明显的.设置状态 \(f[i][j][0/1]\) 表示dp到第 \(i\) 个位置,前面(包括这里)已经出现了 \(j\) 个山峰,当前位置是不是山峰即可 dp.这样的状态有一 ...
- 「CodePlus 2017 12 月赛」白金元首与独舞
description 题面 data range \[ 1 \leq T \leq 10, 1 \leq n, m \leq 200 , 0 \leq k \leq \min(nm, 300)\] ...
- BZOJ5343 & 洛谷4602 & LOJ2555:[CTSC2018]混合果汁——题解
https://www.luogu.org/problemnew/show/P4602 https://loj.ac/problem/2555 https://www.lydsy.com/JudgeO ...