h5上传图片并裁剪

本文主要实现,h5通过input上传图片后,利用cropperjs进行裁剪,获取指定尺寸

1 安装cropperjs

npm install cropperjs 

2 具体实现

home.jsx
代码中的result模块用来展示最终的裁剪结果;mask用作页面最上层蒙层,用来裁剪上传的图片

import React, { memo, useEffect, useState, useRef } from 'react'
import 'cropperjs/dist/cropper.css'
import Cropper from 'cropperjs'
import cn from './home.module.scss'

let myCropper = null // 创建cropper全局对象

function Home() {
	const [uploadImg, setUploadImg] = useState('') // 上传图像的地址
	const [cropperImg, setCropperImg] = useState('') // 裁剪后的图像地址
  	const imgRef = useRef()

  	const initCrop = () => { // 初始化
  		myCropper = new Cropper(imgRef.current, {
      		viewMode: 1, // 视图控制
      		dragMode: 'none', // 拖拽图片模式
      		aspectRatio: 1, // 裁剪框为固定的宽高比
      		autoCropArea: 0.6, // 设置裁剪区域占图片的大小 值为 0-1 默认 0.8 表示 80%的区域
      		zoomOnWheel: false, // 是否可以通过鼠标滚轮缩放图片 默认true
    	})
  	}

  	const cancel = () => { // 销毁
    	myCropper.destroy() // 销毁cropper
    	myCropper = null
  	}

  	const handleCrop = async () => { // 裁剪
    	setUploadImg('')
    	myCropper.getCroppedCanvas({
      		imageSmoothingQuality: 'high'
    	}).toBlob(async (blob) => {
      	// 设置个文件名,不然文件名就是默认的“blob”
      	const file = new File([blob], 'result.png')
      	const img = window.URL.createObjectURL(file)
      	setCropperImg(img)
      	cancel()
    	})
  	}

  	const handleUpload = async (e) => { // 上传
    	const file = e.target.files[0]
    	const img = window.URL.createObjectURL(file) // 上传图片的blob地址
    	setUploadImg(img)
    	setTimeout(() => {
     		initCrop() // 开始裁剪
    	}, 0)
  	}

  	return <div className={cn.main}>
    	<input
      		className={cn.item_input}
      		type={'file'}
      		accept={'image/*'}
      		onChange={handleUpload}
   	 	/>
   	 	<div className={cn.result}>
      		{
        		cropperImg && <img src={cropperImg} alt='' className={cn.result_cropper} />
     		}
   	 	</div>
   	 	{
      		uploadImg && <div className={cn.mask}>
        		<div className={cn.mask_btn} onClick={handleCrop}>裁剪</div>
        		<img ref={imgRef} className={cn.mask_cropper} src={uploadImg} alt='' />
      		</div>
      	}
	</div>
}

home.module.scss

.input {
  margin: auto;
  height: 50px;
}

.result {
  position: relative;
  margin: auto;
  height: 300px;
  width: 100%;

  &_cropper {
  	position: absolute;
  	left: 50%;
  	top: 50%;
  	transform: translate(-50%, -50%);
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
  }
}

.mask {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.7);

  &_btn {
    position: absolute;
    z-index: 10;
    right: 0;
    top: 0;
    width: 100px;
    height: 100px;
    font-size: 28px;
    font-weight: 450;
    line-height: 100px;
    color: #FFFFFF;
  }

  &_cropper {
  	position: absolute;
  	left: 50%;
  	top: 50%;
  	transform: translate(-50%, -50%);
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
  }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
H5上传图片ASP是指在ASP(Active Server Pages)服务器端技术中使用H5(HTML5)进行图片上传。H5是HTML的最新版本,具有更多的功能和特性。 在H5中,使用<input type="file">元素来创建一个文件上传的输入框,用户可以通过点击该输入框选择本地图片文件进行上传。在ASP服务器端,可以使用ASP提供的对象和方法来处理上传的图片。 首先,前端页面需要通过表单将图片数据发送给ASP服务器。当用户选择了要上传的图片文件后,点击提交按钮,就会触发提交事件。通过设置表单的enctype属性为"multipart/form-data",可以确保图片以二进制数据的形式传送给服务器。 在ASP服务器端,可以使用Request对象的Files集合来获取上传的图片文件。调用Request.Files("name")方法可以获取指定name属性的上传文件对象。然后,可以使用File对象提供的方法和属性来处理上传的图片,例如保存到服务器指定的文件夹中,获取图片的文件名等。 另外,还可以对上传的图片进行一些验证和处理,例如判断图片格式是否符合要求、检查图片的大小是否合适等。可以使用ASP提供的对象和方法来实现这些功能。 总之,H5上传图片ASP是指在ASP服务器端使用H5进行图片上传的过程。通过前端页面的表单和<input type="file">元素,用户可以选择本地的图片文件进行上传,然后在ASP服务器端使用ASP提供的对象和方法来处理上传的图片。这样就可以实现在ASP中使用H5进行图片上传的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值