CSS代码:
.clip {
position: absolute;
clip: rect(0 0 0 0);
}
HTML代码:
<input type="file" id="uploadFile" class="clip" accept="image/*">
<label class="ui-button ui-button-primary" for="uploadFile">选择图片</label>
<img id="imgCover" src="./watermark.png" class="clip">
<p id="imgUploadX"></p>
JS代码:
var eleUploadFile = document.getElementById('uploadFile');
var eleImgCover = document.getElementById('imgCover');
var eleImgUploadX = document.getElementById('imgUploadX'); if (history.pushState) {
eleUploadFile.addEventListener('change', function (event) {
var reader = new FileReader();
var file = event.target.files[0] || event.dataTransfer.files[0];
reader.onload = function(e) {
var base64 = e.target.result;
if (base64.length > 1024 * 50) {
alert('图片尺寸请小于50K');
return;
} else {
// 使用canvas合成图片,并base64化
imgTogether(base64, function (url) {
// 尺寸
var size = 180 / (window.devicePixelRatio || 1);
// 预览
eleImgUploadX.innerHTML = '<img src="'+ url +'" width="'+ size +'" height="'+ size +'">';
});
}
};
reader.readAsDataURL(file);
}); // canvas图片合成
var imgTogether = function (url, callback) {
var canvas = document.createElement('canvas');
var size = 180;
canvas.width = size;
canvas.height = size; var context = canvas.getContext('2d'); // 这是上传图像
var imgUpload = new Image();
imgUpload.onload = function () {
// 绘制
context.drawImage(imgUpload, 0, 0, size, size, 0,0, size, size);
// 再次绘制
context.drawImage(eleImgCover, 0, 0, size, size, 0,0, size, size);
// 回调
callback(canvas.toDataURL('image/png'));
};
imgUpload.src = url;
};
} else if (eleImgUploadX) {
eleImgUploadX.className = 'remind';
eleImgUploadX.innerHTML = '本演示IE10+下才有效果';
}

最新文章

  1. git 使用笔记
  2. js系列(10)js的运用(二)
  3. linux下IPTABLES配置详解(转)
  4. Perforce 使用笔记
  5. java.net.ConnectException: Connection refused: connect
  6. win live
  7. UVALive 3415 Guardian of Decency(二分图的最大独立集)
  8. 【转】What&#39;s the difference between simulation and emulation
  9. Orleans is a framework
  10. Android内核解读-应用的安装过程
  11. ORACLE 博客文章目录
  12. Java Calendar类使用总结
  13. 移动端开发调试工具神器--Weinre使用方法
  14. linux系统虚拟机下安装jdk
  15. C++内存空间
  16. (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目
  17. IntelliJ IDEA 2017版 导入项目项目名称为红色
  18. Java并发编程原理与实战四十五:问题定位总结
  19. 股票F10
  20. Fork/Join 型线程池与 Work-Stealing 算法

热门文章

  1. vs2010统计代码行数
  2. 反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)
  3. CodeForces 723B Text Document Analysis (水题模拟)
  4. poj1419 求最大独立集
  5. mount: unknown filesystem type &#39;ntfs&#39;(转载)
  6. Taro 采坑日常
  7. html 解决空格显示问题
  8. The Fewest Coins POJ - 3260
  9. Apple Tree POJ - 2486
  10. 递推DP UVA 607 Scheduling Lectures