mirror of
https://github.com/palxiao/poster-design.git
synced 2025-07-15 16:02:19 +08:00
feat: page size limit
This commit is contained in:
parent
0d933530fb
commit
79cda1c4a0
@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: ShawnPhang
|
* @Author: ShawnPhang
|
||||||
* @Date: 2020-07-22 20:13:14
|
* @Date: 2020-07-22 20:13:14
|
||||||
* @Description:
|
* @Description: 接口名称
|
||||||
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
||||||
* @LastEditTime: 2023-07-06 16:00:09
|
* @LastEditTime: 2023-07-27 17:51:53
|
||||||
*/
|
*/
|
||||||
let path = '/api';
|
let path = '/api';
|
||||||
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: ShawnPhang
|
* @Author: ShawnPhang
|
||||||
* @Date: 2020-07-22 20:13:14
|
* @Date: 2020-07-22 20:13:14
|
||||||
* @Description:
|
* @Description: 路由
|
||||||
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
||||||
* @LastEditTime: 2023-07-06 15:59:58
|
* @LastEditTime: 2023-07-27 17:51:36
|
||||||
*/
|
*/
|
||||||
const rExpress = require('express');
|
const rExpress = require('express');
|
||||||
const screenshots = require('../service/screenshots.ts');
|
const screenshots = require('../service/screenshots.ts');
|
||||||
@ -11,8 +11,11 @@ const api = require('./api.ts');
|
|||||||
const rRouter = rExpress.Router();
|
const rRouter = rExpress.Router();
|
||||||
|
|
||||||
rRouter.get(api.SCREENGHOT, screenshots.screenshots);
|
rRouter.get(api.SCREENGHOT, screenshots.screenshots);
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'development') {
|
||||||
rRouter.get(api.PRINTSCREEN, screenshots.printscreen);
|
rRouter.get(api.PRINTSCREEN, screenshots.printscreen);
|
||||||
rRouter.get(api.GETIMAGE, screenshots.getImg);
|
rRouter.get(api.GETIMAGE, screenshots.getImg);
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = rRouter;
|
module.exports = rRouter;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* @Date: 2021-09-30 14:47:22
|
* @Date: 2021-09-30 14:47:22
|
||||||
* @Description: 下载图片(单浏览器版,适用于低配置服务器)
|
* @Description: 下载图片(单浏览器版,适用于低配置服务器)
|
||||||
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
* @LastEditors: ShawnPhang <site: book.palxp.com>
|
||||||
* @LastEditTime: 2023-07-17 18:03:57
|
* @LastEditTime: 2023-07-27 18:38:33
|
||||||
*/
|
*/
|
||||||
const isDev = process.env.NODE_ENV === 'development'
|
const isDev = process.env.NODE_ENV === 'development'
|
||||||
const puppeteer = require('puppeteer')
|
const puppeteer = require('puppeteer')
|
||||||
@ -25,10 +25,17 @@ const saveScreenshot = async (url: string, { path, width, height, thumbPath, siz
|
|||||||
// 打开页面
|
// 打开页面
|
||||||
const page = await browser.newPage()
|
const page = await browser.newPage()
|
||||||
// 设置浏览器视窗
|
// 设置浏览器视窗
|
||||||
|
// 4K规格,总计约830万像素 3840 * 2160 2K规格,总计约830万像素 2048 * 1080
|
||||||
|
// const maxPXs = 8294400
|
||||||
|
const maxPXs = 4211840
|
||||||
|
function limiter(w: number, h: number) {
|
||||||
|
// 限制器,超出规格会降低dpr输出,节省服务器资源
|
||||||
|
return w*h < maxPXs ? 1 : +(1/(w*h) * maxPXs).toFixed(2)
|
||||||
|
}
|
||||||
page.setViewport({
|
page.setViewport({
|
||||||
width: Number(width),
|
width: Number(width),
|
||||||
height: Number(height),
|
height: Number(height),
|
||||||
deviceScaleFactor: !isNaN(scale) ? (+scale > 4 ? 4 : +scale) : 1,
|
deviceScaleFactor: !isNaN(scale) ? (+scale > 4 ? 4 : +scale) : limiter(Number(width), Number(height)),
|
||||||
})
|
})
|
||||||
ua && page.setUserAgent(ua)
|
ua && page.setUserAgent(ua)
|
||||||
if (devices) {
|
if (devices) {
|
||||||
|
@ -45,6 +45,7 @@ export default {
|
|||||||
step: {
|
step: {
|
||||||
default: 1,
|
default: 1,
|
||||||
},
|
},
|
||||||
|
maxValue: {},
|
||||||
},
|
},
|
||||||
emits: ['finish', 'update:modelValue'],
|
emits: ['finish', 'update:modelValue'],
|
||||||
data() {
|
data() {
|
||||||
@ -66,12 +67,18 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
fixedNum() {
|
fixedNum() {
|
||||||
// 小数点过长时
|
// 小数点过长时
|
||||||
const num = String(this.modelValue).split('.')[1]
|
const decimal = String(this.modelValue).split('.')[1]
|
||||||
if (num && num.length > 2) {
|
if (decimal && decimal.length > 2) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
this.updateValue(Number(this.modelValue).toFixed(2))
|
this.updateValue(Number(this.modelValue).toFixed(2))
|
||||||
}, 10)
|
}, 10)
|
||||||
}
|
}
|
||||||
|
// 超过阈值时
|
||||||
|
if (this.maxValue && this.modelValue > this.maxValue) {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.updateValue(Number(this.maxValue))
|
||||||
|
}, 10)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
updateValue(value) {
|
updateValue(value) {
|
||||||
this.$emit('update:modelValue', value)
|
this.$emit('update:modelValue', value)
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
<el-collapse v-model="activeNames">
|
<el-collapse v-model="activeNames">
|
||||||
<el-collapse-item title="画布尺寸" name="1">
|
<el-collapse-item title="画布尺寸" name="1">
|
||||||
<div class="position-size">
|
<div class="position-size">
|
||||||
<number-input v-model="innerElement.width" label="宽" @finish="(value) => finish('width', value)" />
|
<number-input v-model="innerElement.width" label="宽" :maxValue="5000" @finish="(value) => finish('width', value)" />
|
||||||
<number-input v-model="innerElement.height" label="高" @finish="(value) => finish('height', value)" />
|
<number-input v-model="innerElement.height" label="高" :maxValue="5000" @finish="(value) => finish('height', value)" />
|
||||||
</div>
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item title="背景设置" name="2">
|
<el-collapse-item title="背景设置" name="2">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user