Browse Source

水印

yunpan
liwenxuan 3 months ago
parent
commit
fee3c6c89d
  1. 72
      src/components/lowCode/assistant/lowcodeImage.vue

72
src/components/lowCode/assistant/lowcodeImage.vue

@ -53,7 +53,7 @@ const imgPath = ref(errimg)
// //
const beforeAvatarUpload = (rawFile) => { const beforeAvatarUpload = (rawFile) => {
imgLoading.value = true //imgLoading.value = true
// console.log("",rawFile.type) // console.log("",rawFile.type)
let imgType = ['image/jpeg','image/jpg','image/png','image/gif','image/svg'] let imgType = ['image/jpeg','image/jpg','image/png','image/gif','image/svg']
if (!imgType.includes(rawFile.type)) { if (!imgType.includes(rawFile.type)) {
@ -65,8 +65,14 @@ const beforeAvatarUpload = (rawFile) => {
imgLoading.value = false imgLoading.value = false
return false return false
} }
//
if(props.data.control.onSiteShot=='1'&&props.data.control.watermark=='1'){
beforeUpload1(rawFile)
}else{
return true return true
} }
}
// //
const handleAvatarSuccess = ( const handleAvatarSuccess = (
response, response,
@ -160,8 +166,12 @@ const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
const handleAvatarSuccess1 = (response: any,uploadFile: any) => { const handleAvatarSuccess1 = (response: any,uploadFile: any) => {
// imageUrl.value = URL.createObjectURL(uploadFile.raw!) // imageUrl.value = URL.createObjectURL(uploadFile.raw!)
// console.log("", value); // console.log("", value);
/* console.log(response.data.url) /* console.log(response.data.url)*/
console.log(uploadFile) */ console.log(uploadFile)
console.log(response.data.url)
uploadFile.url = response.data.url
//file.url = response.data.url //
let arrStr = '' let arrStr = ''
props.data.control.uploadedImgs.forEach((element: { url: any; }) => { props.data.control.uploadedImgs.forEach((element: { url: any; }) => {
@ -180,6 +190,60 @@ const handleAvatarSuccess1 = (response: any, uploadFile: any) => {
imgLoading.value = false; imgLoading.value = false;
}; };
const beforeUpload1 = (file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = (e) => {
const img = new Image()
img.src = e.target.result
img.onload = () => {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
// canvas
canvas.width = img.width
canvas.height = img.height
ctx.drawImage(img, 0, 0)
//
const fontSize = Math.max(canvas.width / 20, 16) //
ctx.font = `${fontSize}px Arial`
ctx.fillStyle = 'rgba(155, 155, 155, 0.5)' //
ctx.textAlign = 'right'
ctx.textBaseline = 'bottom'
//
const now = new Date()
const timestamp = now.toLocaleString() // "2025/9/4 13:11:20"
ctx.fillText(timestamp, canvas.width - 20, canvas.height - 20)
// canvas Blob File
canvas.toBlob((blob) => {
const watermarkedFile = new File([blob], file.name, {
type: 'image/jpeg', // image/png
lastModified: Date.now(),
})
resolve(watermarkedFile) //
}, 'image/jpeg', 0.95)
}
img.onerror = () => {
reject(new Error('图片加载失败'))
}
}
reader.onerror = () => {
reject(new Error('文件读取失败'))
}
})
}
const attrs = useAttrs() const attrs = useAttrs()
/* onMounted(()=>{ /* onMounted(()=>{
@ -334,7 +398,7 @@ const toShow = ref(false)
list-type="picture-card" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove" :on-remove="handleRemove"
:before-upload="beforeAvatarUpload" :before-upload="beforeUpload1"
v-loading="imgLoading" v-loading="imgLoading"
:on-success="handleAvatarSuccess1" :on-success="handleAvatarSuccess1"
style="margin-top: 10px;" style="margin-top: 10px;"

Loading…
Cancel
Save