vue裁剪图片功能demo(可运行,直接复制即可)

vue裁剪图片功能demo(可运行,直接复制即可)

参考连接参考原文
原文已经说很清楚了,直接复制原文demo即可。

注意点:1.截取图像很糊:full: false, //输出原图比例截图  
	   2.上传文件格式 请注意你传到后台的文件格式 。
	   //下图为上传方法
	   {
			let _this = this;
			this.$refs.cropper.getCropData(base64Data => {
			console.log("截取拿到的值是base64格式,请注意你后台要什么格式",base64Data)
	// let param = {  //原文格式JSON传
				//   token: this.$store.state.token,
				//   image: base64Data
				// };
				// imageAdd(param).then(res => {
				//   // console.log("提交新增图片:", res);
				//   if (res.data.respCode == "00000") {
				//     this.$message.success(res.data.respDesc);
				//     this.photoCount++;
				//     this.cropImageFormVisible = false;
				//     this.getImageData();
				//   } else {
				//     this.$message.error(res.data.respDesc);
				//   }
				// });


				//我的后台要formData格式二进制格式文件格式  所以需要 base64转blob然后放入formData中发送 注意不要将此方法独立写在外层调用,会找不到的 原因不明
				console.log('裁剪图像', base64Data);
				var byteString;
				if (base64Data.split(',')[0].indexOf('base64') >= 0) byteString = atob(base64Data.split(',')[1]);
				else byteString = unescape(base64Data.split(',')[1]);
				var mimeString = base64Data
					.split(',')[0]
					.split(':')[1]
					.split(';')[0];
				var ia = new Uint8Array(byteString.length);
				for (var i = 0; i < byteString.length; i++) {
					ia[i] = byteString.charCodeAt(i);
				}
				var bfile = new Blob([ia], {
					type: mimeString
				});
				var file = bfile;
				console.log(file);
				const formData = new FormData();
				formData.append('file', file);//转换
				//转换完毕
				$.ajax({
					url: '/api/****',
					data: formData,
					type: 'POST',
					cache: false,
					async: true,
					contentType: false,
					processData: false,
					success(data) {
						console.log(data);
				//上传成功的操作
					}
				});	
			});
		},
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现批量裁剪图片功能,可以使用Vue.js和JavaScript的canvas API。具体步骤如下: 1. 通过Vue.js的文件上传组件获取多个图片文件。 2. 使用JavaScript的FileReader API将图片文件转换为base64编码的数据。 3. 创建一个canvas元素,将图片绘制到canvas上。 4. 在canvas上绘制裁剪框,可以使用JavaScript库如fabric.js或手写绘制代码。 5. 获取裁剪框的位置和大小,通过canvas的getImageData方法获取裁剪区域的像素数据。 6. 将像素数据转换为新的base64编码的数据,保存或上传到服务器。 下面是一个简单的Vue.js组件示例,演示如何裁剪上传的图片: ```html <template> <div> <input type="file" multiple @change="handleFileUpload"> <canvas ref="canvas"></canvas> <button @click="cropImages">裁剪</button> </div> </template> <script> export default { data() { return { files: [], cropRect: null, }; }, methods: { handleFileUpload(event) { this.files = event.target.files; }, cropImages() { for (let i = 0; i < this.files.length; i++) { const file = this.files[i]; const reader = new FileReader(); reader.onload = () => { const img = new Image(); img.onload = () => { const canvas = this.$refs.canvas; canvas.width = img.width; canvas.height = img.height; const ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0); if (this.cropRect) { const imageData = ctx.getImageData(this.cropRect.left, this.cropRect.top, this.cropRect.width, this.cropRect.height); const newCanvas = document.createElement('canvas'); newCanvas.width = this.cropRect.width; newCanvas.height = this.cropRect.height; const newCtx = newCanvas.getContext('2d'); newCtx.putImageData(imageData, 0, 0); const newDataUrl = newCanvas.toDataURL(file.type); // 处理新的base64编码的数据,可以保存或上传到服务器 } }; img.src = reader.result; }; reader.readAsDataURL(file); } }, }, }; </script> ``` 在这个示例中,我们使用了HTML5的FileReader API将文件转换为base64编码的数据,并使用了canvas API绘制和裁剪图片。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值