JS 水印图片合成实例页面
2024-09-30 17:11:04
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+下才有效果';
}
最新文章
- git 使用笔记
- js系列(10)js的运用(二)
- linux下IPTABLES配置详解(转)
- Perforce 使用笔记
- java.net.ConnectException: Connection refused: connect
- win live
- UVALive 3415 Guardian of Decency(二分图的最大独立集)
- 【转】What&#39;s the difference between simulation and emulation
- Orleans is a framework
- Android内核解读-应用的安装过程
- ORACLE 博客文章目录
- Java Calendar类使用总结
- 移动端开发调试工具神器--Weinre使用方法
- linux系统虚拟机下安装jdk
- C++内存空间
- (转)Maven学习总结(七)——eclipse中使用Maven创建Web项目
- IntelliJ IDEA 2017版 导入项目项目名称为红色
- Java并发编程原理与实战四十五:问题定位总结
- 股票F10
- Fork/Join 型线程池与 Work-Stealing 算法
热门文章
- vs2010统计代码行数
- 反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)
- CodeForces 723B Text Document Analysis (水题模拟)
- poj1419 求最大独立集
- mount: unknown filesystem type &#39;ntfs&#39;(转载)
- Taro 采坑日常
- html 解决空格显示问题
- The Fewest Coins POJ - 3260
- Apple Tree POJ - 2486
- 递推DP UVA 607 Scheduling Lectures